如何分割逗号和点?

时间:2019-05-27 12:54:18

标签: python regex string replace split

系统将为您提供仅包含数字,逗号和点的字符串。您的任务是完成下面定义的regex_pattern,这将用于re.split(),中所有的.符号。确保每个逗号和每个点前面和后面都有一个数字。

Sample Input 0

100,000,000.000

Sample Output 0

我正在使用Python 3.7.2,并尝试使用re.split\,*\.*,如下代码所示,但它似乎会在每个数字之后打印。

regex_pattern = r"\,*\.*"

import re
print("\n".join(re.split(regex_pattern, input())))

但是,这似乎是打印顺序错误。

我应该在regex_pattern中添加什么?

预期结果为:

100
000
000
000

但是,我得到了:

1   
0   
0   

0   
0   
0   

0   
0   
0

3 个答案:

答案 0 :(得分:2)

string = "100,000,000.000"

regex_pattern = r"[,.]"

import re
print("\n".join(re.split(regex_pattern, string)))
100
000
000
000

编辑:修复了基于添加到注释中的解决方案Diwakar SHARMA的模式。

答案 1 :(得分:1)

另一种完成此工作的方法是用换行符替换逗号和点:

import re

string = "100,000,000.000"
print re.sub(r"[,.]", '\n', string)

输出:

100
000
000
000

答案 2 :(得分:0)

您的解决方案已接近按预期工作。您的正则表达式使用*通配符,在您的情况下,.文字中,它匹配0个或多个其后跟的字符实例。这里的微妙之处在于它们都可以完全是零匹配,因此它将在每个字符之间分配!

要改善正则表达式以执行预期的工作,可以对其进行修改以使用+通配符,该通配符匹配一个或多个字符。严格来说,您可能只有一个字符,在这种情况下,您可能根本不需要量词!但是,如果使用+通配符,则还需要添加|运算符,使其与,.匹配。

最终,您的正则表达式应该看起来像r"\,+|\.+"或更佳,使用[]这样的r"[\,\.]"组,它将与一个,或{{1} }。添加.通配符以匹配一个或多个。