Python 如何获取夹在逗号之间的数字?
以下是Python代码片段Python 如何获取夹在逗号之间的数字?,python,regex,Python,Regex,以下是Python代码片段 line='3520005,“多伦多(安大略省)”,C,F,25032812481494,F,F,0.91040597979330630.17633972.4,1\r\n'我希望能够得到夹在两个逗号之间的第一个数字,在本例中是,2503281, 然而,我提出的方法似乎不能正常工作:m=re.search(“\,([0-9])*\,”行)只保留数字中的最后一位。星号需要放在括号内: `",([0-9]*)," 否则,您只能捕获其中一个数字。你也不需要在逗号前加反斜杠,
line='3520005,“多伦多(安大略省)”,C,F,25032812481494,F,F,0.91040597979330630.17633972.4,1\r\n'
我希望能够得到夹在两个逗号之间的第一个数字,在本例中是,2503281,
然而,我提出的方法似乎不能正常工作:
m=re.search(“\,([0-9])*\,”行)
只保留数字中的最后一位。星号需要放在括号内:
`",([0-9]*),"
否则,您只能捕获其中一个数字。你也不需要在逗号前加反斜杠,但那没关系
您可能还希望使用
+
而不是*
来确保至少有一个数字,或者甚至使用{}
设置数字的最小/最大限制星号需要放在括号内:
`",([0-9]*),"
否则,您只能捕获其中一个数字。你也不需要在逗号前加反斜杠,但那没关系
您可能还希望使用
+
而不是*
来确保至少有一个数字,或者甚至使用{}
设置数字的最小/最大限制。以下是一个非正则表达式解决方案:
>>> [item for item in line.split(',')[1:] if item.isdigit()][0]
'2503281'
以下是一个非正则表达式解决方案:
>>> [item for item in line.split(',')[1:] if item.isdigit()][0]
'2503281'
请注意,使用正则表达式解析逗号分隔的值充满了疏忽、脆弱性和潜在错误。如果你能强迫它成为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']
是正则表达式的解释。请注意,使用正则表达式解析逗号分隔的值充满了疏忽、脆弱性和潜在错误。如果你能强迫它成为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']
是正则表达式的解释。我认为您需要在捕获组内移动
*
,例如:,([0-9]*),“
可能您应该使用csv
模块,因为它可能包含更多,
内引号。我认为您需要在捕获组内移动*
,例如:,([0-9]*),”
您可能应该使用csv
模块,因为它可能包含更多的,
内引号问题没有具体说明,但请记住这只适用于整数,而不是列表中的所有数字都是整数。不要试图用这个来挑出第三个数字,比如说第三个数字,0.9
,因为你会得到1040597
,而问题没有具体说明,但请记住,这只适用于整数,而不是列表中的所有数字都是整数。不要试着用这个来挑选第三个数字,0.9
,因为你会得到1040597