2010-11-24 67 views
6

私は、HTMLの束を持っています。私はBeautifulSoupで解析しています。私は私の現在の出力として、次のシングルが並ぶ文字列に出力を保存したい:BeautifulSoupの空白を取り除く方法

<li><span class="plaincharacterwrap break"> 
        Zazzafooky but one two three! 
       </span></li> 
<li><span class="plaincharacterwrap break"> 
        Zazzafooky2 
       </span></li> 
<li><span class="plaincharacterwrap break"> 
        Zazzafooky3 
       </span></li> 

理想的には私が

<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li> 

を希望冗長空白の多くは、私がしたいことがあります取り除くのが好きですが、それは必ずしもstrip()を使用して取り外し可能であるとは限らず、テキストを保持する必要があるため、すべてのスペースを大量に削除することはできません。どうしたらいいですか?正規表現が過度に使用されるという共通の問題のようですが、それが唯一の方法ですか?

私はそこにもう少し強力なことができるので、私は<pre>タグを持っていません。

ありがとうございました!

+0

? – user225312

+0

あなたは何をブラウザで行うことができます:隣接するすべての空白(テキスト内)を単一のスペースに畳みます。 – delnan

答えて

9

はあなたが正規表現せずにそれを行うことができる方法である。

>>> html = """ <li><span class="plaincharacterwrap break"> 
...      Zazzafooky but one two three! 
...     </span></li> 
... <li><span class="plaincharacterwrap break"> 
...      Zazzafooky2 
...     </span></li> 
... <li><span class="plaincharacterwrap break"> 
...      Zazzafooky3 
...     </span></li> 
... """ 
>>> html = "".join(line.strip() for line in html.split("\n")) 
>>> html 
'<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li><li><span class="plaincharacterwrap break">Zazzafooky3</span></li>' 
0
re.sub(r'[\ \n]{2,}', '', yourstring) 

正規表現[\ \n]{2}は、改行やスペースにマッチし、それら以上の二つ以上があるとき(エスケープする必要があります)。私はうまく動作するように(少なくとも私にとっては)最初は唯一の複数の改行を置換するだろうが、それはそう思うだろう

re.sub('\ {2,}', '', yourstring) 
re.sub('\n*', '', yourstring) 

:もっと徹底はこれです。ここで

6

旧質問、私は知っているが、stripped_stringsと呼ばれるこのヘルパーはbeautifulsoup4ています。

これを試してみてください:どのようにあなたの出力を印刷している

description_el = about.find('p', { "class": "description" }) 
descriptions = list(description_el.stripped_strings) 
description = "\n\n".join(descriptions) if descriptions else "" 
関連する問題