以下是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)
仅保留数字中的最后一位数。
答案 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是正则表达式的解释。