2016-09-06 12 views
1

こんにちは私はおそらくPythonの正規表現を使用してテキストファイルから解析される次の文字列を分割したいと思います。Pythonの正規表現を使用して文字列を分割する

Inside the text file(filename.txt) 

iPhone.Case.1.left=1099.0.2 
new.phone.newwork=bla.jpg 

私はarrayOfStrings wiiの分割により、それをループするときは、次の

['iPhone','Case','1','left','1099.0.2'] 

['new','phone','newwork','bla.jpg'] 

を表示されるように、これは私がこれは何であるこれまで

import re 
pattern = '(?<!\d)[\.=]|[\.=](?!\d)' 

f = open('filename.txt','rb') 
for line in data_file: 
    str_values = re.split(pattern, line.rstrip()) 
    print str_values 

をやっていることであるという機能が欲しいです印刷中です。

['iPhone', 'Case', '1', 'left', '1099.0.2'] 
['new', 'phone', 'newwork', 'bla', 'jpg'] 

私は最後の配列が

['new','phone','newwork','bla.jpg'] 
+0

うん、それは確かになんとかです。何か試しましたか?あなたのコードを書くつもりはありません。 –

+0

@MorganThrappはい質問を編集させていただきました – haji

+1

分割対象の文字があるかどうかを判断するルールは何ですか?私はあなたが "iPhone"と "Case"の間のドットに分割したいが、 "1099"と "0"の間のドットには分割したくないと思う。また、あなたはおそらく分割することができる唯一の文字はドットと等しいですか?最後に、あなたは何かを「表示」したいと言っていますが、本当にデータ構造が必要だと思います。リストのリストです。おそらく各内部リストは入力リストのエントリの分割バージョンです。 –

答えて

1

をすべての.文字、私は完全に正規表現をスキップします。それは複雑で読みづらいものではありません。ここで

はちょうどそれを行うための例です:

s = 'new.phone.newwork=bla.jpg' 
l = str.split(s.split('=')[0], '.') + s.split('=')[1:] 
0

このお試しになりたい:あなたは常に=文字で最初に分割することができ、通常の十分な入力データを持っている場合は、で前半を分割

% python 
>>> import re 
>>> arrayOfStrings =["iPhone.Case.1.left=1099.0.2", " new.phone.newwork=bla.jpg"] 
>>> def printStuff(arg): 
...  for i,x in enumerate(arg): 
>>>   print(arg[i].split('=')[i].split('.') + [ arg[i].split('=')[1] ]) 
... 
>>> printStuff(arrayOfStrings) 
['iPhone', 'Case', '1', 'left', '1099.0.2'] 
['bla', 'jpg', 'bla.jpg'] 
関連する問題