【问题标题】:Python: How to remove whitespace from number in a stringPython:如何从字符串中的数字中删除空格
【发布时间】:2014-11-24 10:55:13
【问题描述】:

我想从 PYTHON 中的字符串中删除空格:

  • 示例:

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 850 152 nisi ut aliquip ex ea commodo 结果。 Duis aute irure 360 458 000 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。

  • 想要的结果:

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 850152 nisi ut aliquip ex ea commodo 结果。 Duis aute irure 360458000 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。

【问题讨论】:

  • 你的实现在哪里,它到底有什么问题?

标签: python string join merge numbers


【解决方案1】:

您可以使用如下re.sub 函数,

re.sub(r'(?<=\d)\s(?=\d)', r'', string)

DEMO

在一个或多个空格字符之间替换。

re.sub(r'(?<=\d)\s+(?=\d)', r'', string)

例子:

>>> import re
>>> s = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 850 152 nisi ut aliquip ex ea commodo consequat. Duis aute irure 360 458 000 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
>>> re.sub(r'(?<=\d)\s(?=\d)', r'', s)
'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 850152 nisi ut aliquip ex ea commodo consequat. Duis aute irure 360458000 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'

正则表达式:

(?<=                     look behind to see if there is:
  \d                       digits (0-9)
)                        end of look-behind
\s+                      whitespace (\n, \r, \t, \f, and " ") (1 or
                         more times)
(?=                      look ahead to see if there is:
  \d                       digits (0-9)
)                        end of look-ahead

【讨论】:

    【解决方案2】:
    (?<=\d)[ ]+(?=\d)
    

    您可以为此尝试re 模块。

    查看演示。

    http://regex101.com/r/yP3iB0/22

    import re
    p = re.compile(ur'(?<=\d)[ ]+(?=\d)')
    test_str = u"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris 850 152 nisi ut aliquip ex ea commodo consequat. Duis aute irure 360 458 000 dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    subst = u""
    
    result = re.sub(p, subst, test_str)
    

    【讨论】:

      猜你喜欢
      • 2014-01-26
      • 2015-04-21
      • 2021-09-04
      • 2020-02-02
      • 2011-09-21
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      相关资源
      最近更新 更多