Python re.findall查找带破折号(-)和逗号(,)的数字
我有价值Python re.findall查找带破折号(-)和逗号(,)的数字,python,Python,我有价值 x = '970.11 - 1,003.54' 例如,我试过很多类型的re.findall re.findall('\+d',x) ['970', '11', '1', '003', '54'] 虽然我想让它表现出来 ['970.11', '1,003.54] \d仅为数字。它不会匹配其他字符,即使我们认为它们是数字的一部分。您需要手动执行以下操作: import re x = '970.11 - 1,003.54' re.findall('[\d\.,]+',x) # mat
x = '970.11 - 1,003.54'
例如,我试过很多类型的re.findall
re.findall('\+d',x)
['970', '11', '1', '003', '54']
虽然我想让它表现出来
['970.11', '1,003.54]
\d
仅为数字。它不会匹配其他字符,即使我们认为它们是数字的一部分。您需要手动执行以下操作:
import re
x = '970.11 - 1,003.54'
re.findall('[\d\.,]+',x) # match numbers . or ,
结果:
['970.11', '1,003.54']
这是一个非常宽容的正则表达式-它将匹配许多可能不是数字的东西(如
,,4
)。如果您想要在一般情况下(如.45
、11000.2
、22.
)等)工作,则数字可能很难与正则表达式匹配。您的输入越一致,就越容易匹配。有时更容易匹配非成员(如您的-
)。\d
仅为数字。它不会匹配其他字符,即使我们认为它们是数字的一部分。您需要手动执行以下操作:
import re
x = '970.11 - 1,003.54'
re.findall('[\d\.,]+',x) # match numbers . or ,
结果:
['970.11', '1,003.54']
这是一个非常宽容的正则表达式-它将匹配许多可能不是数字的东西(如
,,4
)。如果您想要在一般情况下(如.45
、11000.2
、22.
)等)工作,则数字可能很难与正则表达式匹配。您的输入越一致,就越容易匹配。有时更容易匹配非成员(如您的-
)。试试这个,它也可以:
import re
re.findall('\d+\,?\d+\.*\d*',x)
输出:
['970.11', '1,003.54']
在这里,,
是可选的,如果它在它接受的数字之间,否则它将不接受它。
如果希望将
作为可选项,则可以如下所示:
In [48]: x
Out[48]: '970.11 - 1,003.54 2345'
In [49]: re.findall('\d+\,?\d+\.?\d+',x)
Out[49]: ['970.11', '1,003.54', '2345']
试试这个,它也可以:
import re
re.findall('\d+\,?\d+\.*\d*',x)
输出:
['970.11', '1,003.54']
在这里,,
是可选的,如果它在它接受的数字之间,否则它将不接受它。
如果希望将
作为可选项,则可以如下所示:
In [48]: x
Out[48]: '970.11 - 1,003.54 2345'
In [49]: re.findall('\d+\,?\d+\.?\d+',x)
Out[49]: ['970.11', '1,003.54', '2345']
为了实现这一点,您可以使用正则表达式分组,使用您的示例
x = '970.11 - 1,003.54'
y = re.findall('([0-9.,]+)([ -]+)([0-9.,]+)',x)
print(y[0]) #prints ('970.11', ' - ', '1,003.54')
z = [y[0][0],y[0][2]]
print(z) #prints ['970.11', '1,003.54']
本例中的正则表达式由3组组成:第一组和最后一组至少匹配
0123456789.,
中的一个,中间至少匹配-
(空格或破折号)要获得此结果,可以使用正则表达式分组,以您的示例为例
x = '970.11 - 1,003.54'
y = re.findall('([0-9.,]+)([ -]+)([0-9.,]+)',x)
print(y[0]) #prints ('970.11', ' - ', '1,003.54')
z = [y[0][0],y[0][2]]
print(z) #prints ['970.11', '1,003.54']
本例中的正则表达式由3组组成:第一组和最后一组至少匹配
0123456789.,
中的一个,中间至少匹配-
(空格或破折号)这将有助于'970.11-1003.54'。拆分('-')?