我如何抓住夹在逗号之间的数字?

时间:2013-02-12 05:20:14

标签: python regex

以下是Python代码段

line = '3520005,"Toronto (Ont.)",C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n'我希望能够将第一个数字夹在两个逗号之间,在这种情况下会是,2503281,

然而,我提出的并不能正常工作:m = re.search("\,([0-9])*\,",line)仅保留数字中的最后一位数。

3 个答案:

答案 0 :(得分:3)

星号需要进入括号内:

`",([0-9]*),"

否则您只捕获其中一个数字。你也不需要逗号之前的反斜杠,但这没关系。

您可能还想使用+代替*来确保至少有一位数字,甚至使用{}设置数字的最小/最大限制。

答案 1 :(得分:3)

这是一个非正则表达式解决方案:

>>> [item for item in line.split(',')[1:] if item.isdigit()][0]
'2503281'

答案 2 :(得分:0)

请注意,使用正则表达式解析逗号分隔值充满了疏忽,脆弱和潜在的错误。如果您可以将此强制转换为csv模块可以执行的操作 - 您将会更好。

那说,这有效:

import re

st='''line = '3520005,"Toronto (Ont.)",
C ,F,2503281,2481494,F,F,0.9,1040597,979330,630.1763,3972.4,1\r\n'''

print re.findall(r"(\d+\.?\d*)",st)

打印:

['3520005', '2503281', '2481494', '0.9', '1040597', '979330', '630.1763', '3972.4', '1']

Here是正则表达式的解释。