繁体   English   中英

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

[英]Python: How to remove whitespace from number in a string

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

  • 例:

Lorem ipsum dolor坐镇,奉献己任,圣埃塞莫德临时工和劳动大臣。 尽量不要抽烟,不要进行无用的锻炼劳动850 152从日常使用中抽调出来。 Duis aute irure 360 458 000 dolor in reprehenderit in voltate velit esse cillum dolore eu fugiat nulla pariatur。 不擅长于圣人的情节,应在负责任的犯罪活动中动手。

  • 想要的结果:

Lorem ipsum dolor坐镇,奉献己任,圣埃塞莫德临时工和劳动大臣。 尽量不要抽烟 ,不要进行无聊的锻炼,必须事先准备好152152。 Duis aute irure 360458000 dolor in reprehenderit in voltate velit esse cillum dolore eu fugiat nulla pariatur。 不擅长于圣人的情节,应在负责任的犯罪活动中动手。

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

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

演示

要么

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

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
(?<=\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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM