在python中使用正则表达式删除小数点和逗号

时间:2016-07-06 12:51:27

标签: python regex

我有以下字符串:

st='19.000\n20,000'

我想删除逗号和分数仅限数字。我使用以下代码

re.sub(r'[^\d\.]','',st)

结果是:

  

' 19.00020000'

我是正则表达式的新手。如何保留新行并删除点任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

^\d匹配所有不是数字的内容。

相反,您应该使用(?<=\d)[,\.]

(?<=\d)确保逗号或点之前有数字。

import re

st = '19.000\n20,000\na.a,a'

print(re.sub(r'(?<=\d)[,\.]','',st))
>> 19000
   20000
   a.a,a

答案 1 :(得分:1)

[^\d\.],因为它以^开头,匹配不是&#39; 数字(\d)或点({{1}的所有内容}})。如果您要删除逗号和积分,则需要匹配\.,,可以写为\.[,\.]。在[\.,]中,写了re.sub。你用空字符串(r'[,\.])替换它们,其他一切都应保持原样。

修改根据您问题的更改,删除数字之间的逗号和分数,一种方法是使用

''

将匹配前面有数字(re.sub(r'(?<=\d)[,\.](?=\d)','',st) )的逗号或点,后跟数字((?<=\d))。这些被称为documentation