2013-02-24 10 views
6
commentary = soup.find('div', {'id' : 'live-text-commentary-wrapper'}) 
findtoure = commentary.find(text = re.compile('Gnegneri Toure Yaya')).replace('Gnegneri  Toure Yaya', 'Yaya Toure') 

注釈には、Yaya Toureに変更する必要があるGnegneri Toure Yayaのさまざまなインスタンスが含まれています。Python - beautifulSoupを使用してテキストを検索し、元のスープ変数に置き換えます。

findAll() findtoureはリストなので動作しません。

私が持っているもう1つの問題は、単にこのコードを見つけてfindtoureという新しい変数に置き換えることです。私は元のスープでそれらを置き換える必要があります。

私は間違った視点からこれを見ていると思います。

+0

@MartijnPieters夕食のために美しいスープを作ってくれることを願っていますが、覚えていないと私はあなたを責めません。 – PascalVKooten

答えて

12

とすると、ちょうど.replace()とすることはできません。 BeautifulSoup documentation on NavigableStringから:

文字列を編集することはできませんが、replace_with()を使用して文字列を置き換えることはできます。

これはまさにあなたがしなければならないことです。

findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya')) 
for comment in findtoure: 
    fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure') 
    comment.replace_with(fixed_text) 

あなたは、さらにこれらのコメントを使用する場合は、新しい検索を行う必要があります:含まれるテキストに.replace()を呼び出し、それとオリジナルを置き換え、その後、各試合を取る

findtoure = commentary.find(text = re.compile('Yaya Toure')) 

か、あなたが必要とするあなたのすべてが(そうNavigableStringオブジェクトを接続していない)結果Unicodeテキストであれば、ちょうどfixed_textオブジェクトの収集:

findtoure = commentary.find_all(text = re.compile('Gnegneri Toure Yaya')) 
fixed_comments = [] 
for comment in findtoure: 
    fixed_text = unicode(comment).replace('Gnegneri Toure Yaya', 'Yaya Toure') 
    comment.replace_with(fixed_text) 
    fixed_comments.append(fixed_text) 
を210
+0

トリックをしたような感謝の男 – user2073606

関連する問題