2016-09-06 74 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'] 
相关问题