2012-01-12 14 views
0

可能性の重複:
Python: Split string with multiple delimitersPythonのstring.split関数に2つの条件を指定できますか?

私はそれぞれの行でファイルを解析し、2半分にそれを分割していたプログラムを持っています。その後、各半分について、行から各単語を解析し、それをリストに追加します。

ここで、mfcList1は、テキストファイルの行のリストです。私はコンマまたはスペースで区切られた行の各単語を解析しています。しかし、それは正確に働いていません。

for lines in mfcList1: 
     lines = lines.lstrip() 
     if lines!='': 
      p.append(string.split(lines,','or " ")) 
mfcList2 = reduce(lambda x,y:x+y,p) 

print mfcList2 

私はそれはそれは私が分割方式で使用していますまたはオペレータを無視しているコンマで終わる要素のみで作業しているのstring.Splitを使用しています。私はラインからそれぞれのすべての単語をスライスしたい。それらはカンマまたはスペースで終わります。

たとえば、 「enableEmergencySpare = 1 useGlobalSparesForEmergency = 1 useUnconfGoodForEmergency = 1」、

この行は..私は、分割の方法を使用して、それらを分割しようとしていますように、単一のリスト要素として

に格納されている人は、plsは何を示唆することができます私はあなたがreモジュールからsplit()を使用することができます...使用するか、オペレータの代わりに感謝..

答えて

1

を行うことができます。

import re 
... 
p.extend(re.split('[ ,]', lines)) 

[ ,]は、「空白またはカンマ」を意味するregular expressionです。また、pがリストであり、すべての単語を追加する場合は、append()ではなくextend()を使用する必要があります。後者は1つの要素を追加します。

また、コマンドの後にスペース(または他のコンマやスペースの並び)が続く場合、リストpには対応する数の空の文字列が含まれます。

+0

出力をリスト形式で表示しませんでした。私はリストとして出力をしたい。ちょうどスペースとして区切られた単語として出力を示したが、リストではない。 – rain

+0

リストのすべての要素を 'reduce()'と組み合わせるので、そうです。それをやりたくない場合は、 'reduce()'を呼び出さず、代わりにループ内にあるリスト( 'p')だけを表示してください。 –

+0

それはまだ同じことを印刷しています。それだけを取っている、enableEmergencySpare = 1 useGlobalSparesForEmergency = 1 useUnconfGoodForEmergency = 1 – rain

関連する問題