【问题标题】:How to split on commas and dot?如何拆分逗号和点?
【发布时间】:2019-10-13 01:22:06
【问题描述】:

给你一个仅由数字、逗号和点组成的字符串。您的任务是完成下面定义的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

【问题讨论】:

    标签: python regex string replace split


    【解决方案1】:

    另一种方法是用换行符替换逗号和点:

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

    输出:

    100
    000
    000
    000
    

    【讨论】:

      【解决方案2】:

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

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

      最终,您的正则表达式应该看起来像r"\,+|\.+" 或更好,使用[] 组,就像r"[\,\.]",它将完全匹配一个,.。添加+ 通配符以匹配一个或多个。

      【讨论】:

        【解决方案3】:
        string = "100,000,000.000"
        
        regex_pattern = r"[,.]"
        
        import re
        print("\n".join(re.split(regex_pattern, string)))
        
        100
        000
        000
        000
        

        编辑:根据添加到 cmets 的解决方案 Diwakar SHARMA 修复了模式。

        【讨论】:

        • 只是为了你的信息我也工作过 :regex_pattern = r"[,.]" # 不要删除'r'。 import re print("\n".join(re.split(regex_pattern, input())))
        • 是的,您更简单的模式也可以!感谢添加
        • 仅供参考:[\,|\.] 匹配逗号、竖线或点。无需在字符类中转义逗号和点,您的正则表达式可以简化为 r"[,.]"
        猜你喜欢
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 2015-03-07
        • 1970-01-01
        • 2017-08-24
        • 2010-10-23
        • 2015-02-18
        相关资源
        最近更新 更多