2012-05-13 6 views
2

次のコードがあります。BeautifulSoupの出力に.strip()の後ろにスペースが含まれています

html = urllib2.urlopen(
    'https://ebet.tab.co.nz/results/CHCG-reslt05070400.html').read() 


soup = BeautifulSoup(html) 
data = soup.findAll('div', {'class' : 'header bold'}) 
match = re.search('R', data[0].text) 
race_title = data[0].text[(match.start()):] 
race_title = str(race_title.strip(' \t\n\r')) 
print race_title 

私は、コンソール画面に乗る出力は

Race 1 PEDIGREE ADVANCE SPRINT 
       C0 
       295 m 

を下回っている私はストリップがSPRINTとC0の間のスペースのいずれかのタイプを取り除くだろうが、明らかに私は、私は必要な何かが欠けていますと思いましたこの結果を理解するのに役立ちます。それはbs4がユニコードなどの文字列を出力するからですか?

+0

すべてのスペースを削除しますか? – WeaselFox

+0

"レース1 PEDIGREE ADVANCE SPRINT C0 295 m" –

+0

という形式の出力文字列が必要なので、改行を削除しますか? 'race_title.replace(" \ n "、" ")'を使用してください。このすべての情報については、docsを読んでください:http://docs.python.org/library/stdtypes.html – WeaselFox

答えて

2

strip()は、先頭または末尾の文字のみを削除します。改行を削除する場合は、使用する必要があります。replace("\n","")

+0

ああありがとうございます。しかし、私はそこにいくつかの単語の間にタブと改行とスペースがあると思います。 3 .replace()ステートメントを使用するか、これを行うより良い方法がありますか? –

+0

正規表現を使用して文字の範囲を置き換えることができます。 're '(' 345 '、' 999 '、' 123456 ') ' 129996 ' – WeaselFox

2

通常、STRIPは文字列の先頭と末尾のスペースのみを取り除きます。 STR_REPLACEを使用してスペースを ""に置き換えます。

strip(s [、chars])末尾に 末尾の文字が削除された文字列のコピーを返します。 charsを省略するかNoneを指定すると、空白 文字が削除されます。与えられ、Noneでない場合、charsは文字列でなければなりません。 文字列内の文字は、 の両端から削除され、このメソッドが呼び出される文字列になります。バージョン2.2.3で変更されました: charsパラメータが追加されました。 charsパラメータは、以前のバージョンの では渡すことができません。

関連する問題