Python:如何从字符串中的数字中删除空格

时间:2014-11-24 10:55:14

标签: python string join merge numbers

我想从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   consequat。 Duis aute irure 360 458 000 dolor in repreptderit in voluptate velit esse   cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non   事故,在culpa qui officia deserunt mollit anim id est laborum中起诉。

  • 想要的结果:
  

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 repreptderit in voluptate velit esse   cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat non   事故,在culpa qui officia deserunt mollit anim id est laborum中起诉。

2 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分: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)