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

Python:在数字后替换空格,在字母后保留空格,python,regex,Python,Regex,作为预处理数据的一部分。我希望能够用数字替换空格,让空格后面跟一个字符。 例如: 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中使用基于正则表达式的replace函数: re.sub("\s+", ",", release) 但这并不是获取所需的结果,因为这意味着替换所有空

作为预处理数据的一部分。我希望能够用数字替换空格,让空格后面跟一个字符。 例如:

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中使用基于正则表达式的replace函数:

re.sub("\s+", ",", release) 
但这并不是获取所需的结果,因为这意味着替换所有空格,但不确定如何将空格后跟字符,即
[a-z]


或者我需要重新考虑一下方法。

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

>>> 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,200年9月,200年12月,200年12月,无限期”的结果。吃最后一个数字好吧,我不想这么说,但它对我有用;-)请检查一下,似乎你是对的,我的IDE有问题,
release = re.sub(r"(\d)\s+", "\1,", release)