在python中使用正则表达式拆分字符串

时间:2016-09-06 19:41:11

标签: python regex python-2.7

大家好我想拆分下面的字符串,这些字符串是在python中使用正则表达式从文本文件中解析出来的。

Inside the text file(filename.txt)

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

我想要一个函数,当循环遍历arrayOfStrings时,将它拆分以便显示以下内容

['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']

2 个答案:

答案 0 :(得分:1)

如果你有足够的输入数据,你可以随时首先在=字符处拆分,然后在每个.字符处拆分前半部分,我会完全跳过正则表达式,因为它很复杂,不太好读。

以下是这样做的一个例子:

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

答案 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']