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

Python: How to remove whitespace from number in a string

我想从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 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.

  • 招聘结果:

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.


1
(?<=\d)[ ]+(?=\d)

为此,您可以尝试使用re模块。

参见演示。

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

1
2
3
4
5
6
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)

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

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

演示

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

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

例子:

1
2
3
4
>>> 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.'

正则表达式:

1
2
3
4
5
6
7
8
9
10
(?<=                     look behind to see if there is:
  \d                       digits (0-9)
)                        end of look-behind
\s+                      whitespace (
,
, \t, \f, and"") (1 or
                         more times)
(?=                      look ahead to see if there is:
  \d                       digits (0-9)
)                        end of look-ahead