2012-04-25 20 views
-2

:) 次のpythonコードが空白も削除する理由はわかりませんが、それはあります。 誰かが私がそれをやることなくこれを取り除く方法を説明してもらえますか? ありがとうございました! :)pythonは空白を取り除くのを防ぐ

text = html 
rules = [ 
    { r'>\s+' : u'>'}, 
    { r'\s+' : u' '}, 
    { r'\s*<br\s*/?>\s*' : u'\n'}, 
    { r'</(div)\s*>\s*' : u'\n'}, 
    { r'</(p|h\d)\s*>\s*' : u'\n\n'}, 
    { r'<head>.*<\s*(/head|body)[^>]*>' : u'' }, 
    { r'<a\s+href="([^"]+)"[^>]*>.*</a>' : r'\1' }, 
    { r'[ \t]*<[^<]*?/?>' : u'' }, 
    { r'^\s+' : u'' } 
] 
for rule in rules: 
    for (k,v) in rule.items(): 
     regex = re.compile (k) 
     text = regex.sub (v, text) 
print text 
+4

あなたが本当に試すべきではありませんregexesを使ってHTMLを解析するそれはすべて涙で終わるだろう。 – geoffspear

+0

http://stackoverflow.com/a/1732454/1219006 – jamylak

+0

ありがとうございます、私はHTMLパーサに目を向ける:) – abkai

答えて

1

あなたがドキュメントに読み込むことができたよう:http://docs.python.org/library/re.html

\sシーケンスは、すべての空白に一致します。下のルールはすべての空白を削除します。 WoLpHの答え、\sのいくつかのバリエーションであなたの最初の5の再の最後に加えて

0

と最後に(改行以外)に空白​​を含まない文字列でそれを置き換える...

関連する問題