Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取夹在逗号之间的数字?_Python_Regex - Fatal编程技术网

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]*)," 否则,您只能捕获其中一个数字。你也不需要在逗号前加反斜杠,

以下是Python代码片段

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