Python:替换数字后的空格,保留字母后的空格

4
作为预处理数据的一部分,我希望能够替换空格后面跟着数字的空格,同时保留跟在字符后面的空格。例如:
Input String: '8.1.7 Sep 2000 Dec 2004 Dec 2006 Indefinite'

Expected output: '8.1.7,Sep 2000,Dec 2004,Dec 2006,Indefinite'

我正在使用 Python 中基于正则表达式的替换函数:
```python ```
re.sub("\s+", ",", release) 

但是这并没有得到期望的结果,因为这意味着要替换所有空格,不确定如何保留后面跟随字符的空格,即[a-z]。或许我需要重新考虑方法。
2个回答

7

在需要空格之前要求数字,您可以使用(?<=\d)

release = re.sub(r"(?<=\d)\s+", ",", release)

请查看正则表达式演示

详细说明

  • (?<=\d) - 正向后瞻,要求当前位置左侧紧贴着一个数字
  • \s+ - 一个或多个空白字符。

4

您可以尝试使用反向引用:

>>> re.sub(r"(\d)\s+", r"\1,", '8.1.7 Sep 2000 Dec 2004 Dec 2006 Indefinite')
'8.1.7,Sep 2000,Dec 2004,Dec 2006,Indefinite'

所以代码如下:
release = re.sub(r"(\d)\s+", "\1,", release)

说明:
  • (\d) 匹配数字并将其放在第一个匹配组中
  • \s+ 匹配空格
  • 在替换中:\1 引用您找到的数字并将其放回(不带空格)

这个程序相关的内容翻译成中文:我得到的结果是'8.1.,Sep 200,Dec 200,Dec 200,Indefinite'。需要去掉最后一位数字。 - Count
好吧,我不想说,但这对我有效;-) 请检查demo - mrzasa
看起来你是对的,我的IDE出了点问题。 - Count

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接