2013-02-08 110 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