2017-12-15 7 views
0

私は、各Outlook電子メールから特定のデータを解析するスクリプトを作成しています。空白と改行を取り除く最もエレガントな方法は?

私は、文字列を解析する前にすべてのキャリッジリターン、新しい空白、空白を取り除くために何か書きましたが、非常に醜いです。よりエレガントにするためのアイデアは?

messageStr = messageStr.replace("\r","") 
messageStr = messageStr.split('\n') 
messageStr = [i for i in messageStr if i != ''] 
messageStr = [i for i in messageStr if i != ' '] 
+0

*すべての空白を削除しますか?または先頭と末尾に空白がありますか?メッセージ全体または行単位でこれを実行しますか? – sytech

+1

[Pythonで複数の文字列置換を効率的に実行]の可能な複製(https://stackoverflow.com/questions/3367809/efficiently-carry-out-multiple-string-replacements-in-python) – chrisz

答えて

1

.strip文字列のメソッドは、先頭と末尾の空白を削除します。あなたは各行および他の主要な/末尾の空白の改行を取り除くしたい場合、あなたはすべて空白だけでなく、リード/末尾を削除したい場合は、あなたが何かをすることができ、この

lines = [line.strip() for line in message.split('\n')] 

を行うことができますフィルタリングするすべての空白を含む文字列に似ています。 モジュールにはこのためのヘルパーがあります。文字列sからすべての空白を削除します以下:このタスクは、タスクをクリーニングするデータに関連している

import string 
filtered_string = ''.join(char for char in s if char not in string.whitespace) 
1

、ここに私のアプローチです:

リスト内のすべてのシンボルを入れて、任意のシンボルであるならば、ちょうどチェック一覧で削除してから削除してください。

dummy_string='Hello this is \n example \r to remove '' the special symbols ' '' 
special_sym=['\r','\n','',' '] 


[dummy_string.split().__delitem__(j) for j,i in enumerate(dummy_string.split()) if i in special_sym] 

print(" ".join(dummy_string.split())) 

出力:

Hello this is example to remove the special symbols 

P.S:あなたがsplit()を行うとき、それは自動的にそれらを削除しますが、それでも私はちょうど例えばそこにあったので、あなたはspecial_symリストに'\r''\n'を必要としません。

関連する問題