2013-02-08 114 views
3

我有一个相当长的txt文件,其格式为{letter}{number}{letter}。例如,我的文件的前几行:使用整数作为分隔符分割字符串

A123E 
G234W 
R3L 
H4562T 

我有困难找到正确的regex模式由字母和数字在每一行分开。

例如,在第一线,我想一个数组的结果:

print first_line[0] // A 
print first_line[1] // 123 
ptin first_line[2] // E 

好像regex将要走的路,但我仍然是一个新手regex。有人可以帮助我指出如何做到这一点的正确方向吗?

然后我打算迭代每一行并根据需要使用信息。在\d+

回答

10

斯普利特:

import re 
re.split(r'(\d+)', line) 

\d是字符类通过对9匹配数字0,我们要符合其中至少1。通过将捕获组围绕\d+re.split() will include the match in the output

如果捕获括号在模式使用,然后在图案中的所有组的文本也返回结果列表的一部分。

演示:

>>> import re 
>>> re.split(r'(\d+)', 'A123E') 
['A', '123', 'E'] 
+0

你可能想阐述*为什么当'\ d +'不*'(\ d +)'的作品。 – mgilson 2013-02-08 15:42:50

+0

@mgilson:poko poko .. :-)与流行的观点相反,我的答案并不是从我的键盘完全形成的,只有一分之一秒! – 2013-02-08 15:43:35

+0

http://docs.python.org/2/library/re.html#re.split“如果在模式中使用捕获括号,则模式中所有组的文本也会作为结果列表的一部分返回。 “ – 2013-02-08 15:43:57