系统将为您提供仅包含数字,逗号和点的字符串。您的任务是完成下面定义的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
答案 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} }。添加.
通配符以匹配一个或多个。