0

メールからテキストのチャンクを分離する次のコードがあります。

for part in mail.walk():
    if part.get_content_type() == 'text/plain':
        content = part.get_payload()
        message = re.compile(r'\%(.+?)\%', re.DOTALL).findall(content)
        print message

これはテキストを完全に見つけますが、それが の場合prints、次のような結果が得られます。

['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et erat libe=\r\
nro. Ut lacinia ante euismod nibh feugiat pellentesque. Suspendisse vestibul=\r\
...

=\r\各行の末尾にある を削除するにはどうすればよいですか? ありがとうございました!

4

4 に答える 4

0

メッセージを ing すると、次printのようになります。

['Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et erat libe=\r\nro. Ut lacinia ante euismod nibh feugiat pellentesque. サスペンディス前庭=\r\n

…その場合、削除する文字\または文字はありません。rPythonが\r(キャリッジリターン)文字として表示するキャリッジリターン文字があります。また、Python で表示される改行もあります\n

これreprは、 ではなく、文字列の が表示されているためですstr。通常、 … をprint x出力しstrますが、stra list(または他のコレクション) の には、reprではなくstr、またはその各要素が含まれます。

のように を実際に印刷すると、次のように表示strされprint message[0]ます。

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras et erat libe= ro. Ut lacinia ante euismod nibh feugiat pellentesque. サスペンディス前庭=

そのため、 を削除したり、 を削除したり、改行に置き換え'\r\たりする必要はありません。文字列はすでに正しいです。(必要に応じて、Windows スタイルの改行を Unixスタイルに変換できますが、その必要はありません。)\r\n\r\n\r\n\n

=もちろん、各行の末尾の文字は除きます。それを修正するには:

s.replace('=\r', '\r')

または、リスト内のすべての文字列に対して修正するには:

[s.replace('=\r', '\r') for s in message]
于 2013-05-07T19:30:56.787 に答える