作为预处理数据的一部分。我希望能够替换空格后跟一个数字,保持空格后跟一个字符。例如:
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中使用基于正则表达式的替换函数:
re.sub("\s+", ",", release)
但这并不是取得了预期的结果,仅仅是因为这意味着要取代所有的空间,不知道如何保持一个字符,即[a-z]
。
或许我需要重新思考方法。
您可以使用(?<=\d)
在空格之前要求数字:
release = re.sub(r"(?<=\d)\s+", ",", release)
细节
(?<=\d)
- 一个积极的lookbehind,需要一个数字立即出现在当前位置的左侧\s+
- 1个或更多的空白字符。您可以尝试使用反向引用:
>>> 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
引用您找到的数字并将其放回(无空格)