【问题标题】:re.sub replace spaces with commare.sub 用逗号替换空格
【发布时间】:2015-01-13 00:15:43
【问题描述】:

我有一个如下所示的项目列表:

 2.4       -2.0           4.3
-6.0       12.5           1.0

我想要删除所有这些空格并将它们替换为“,”(逗号),但第一个数字前面的空格除外(它们应该被删除(空格)而不是任何东西替换)。所以上面的字符串项在替换后应该是这样的:

2.4,-2.0,4.3
-6.0,12.5,1.0

不是这样的:

,2.4,-2.0,4.3
,-6.0,12.5,1.0

以下代码的作用是什么:

newStrings = []
for s in strings:
    newStrings.append(re.sub('\s+', ',', s))

应该使用 re.sub 的什么正则表达式来实现这一点? 谢谢。

【问题讨论】:

    标签: python regex string replace


    【解决方案1】:

    要删除前导和尾随空格,您可以使用.strip(),然后使用正则表达式\s+ 替换连续的空白字符:

    >>> import re
    >>> s = " 2.4       -2.0           4.3"
    >>> re.sub("\s+", ",", s.strip())
    '2.4,-2.0,4.3'
    

    【讨论】:

    • 谢谢丹尼尔。是否有一些关于正则表达式的初学者友好教程?我试过这个,但我的知识水平看起来很复杂:tutorialspoint.com/python/python_reg_expressions.htm
    • 有很多,但是为 Python 编写的一个是docs.python.org/2/howto/regex.html
    • 也检查了那个。有时我有一种感觉,那些不想让别人学习 Python 的人,会写这种文档。不过谢谢。
    • 没问题。如果答案解决了您的问题,您介意将其标记为已接受的答案吗? (点击复选标记)
    【解决方案2】:

    有很多解决方案......这甚至没有简单地涵盖整个主题,但它确实有效:

    快速解决方案

    In [1]: import re
       ...: d_in = "strip \t\r\n\x00er \ter\rMY\   nr\x00 \t\r\nSPAC       ES\x00  ! "
       ...: d_out = re.sub("\s+", r",", d_in)
       ...: d_out
       ...: 
    Out[1]: 'strip,\x00er,er,MY\\,nr\x00,SPAC,ES\x00,!,'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 2014-10-31
      • 2013-12-10
      • 2017-11-18
      • 1970-01-01
      相关资源
      最近更新 更多