为什么python中的re.sub在替换后会加一个空格?如何去掉空格?

问题描述 投票:0回答:1
import re
def transformrec(record):
    new_record = re.sub(r"([\d-]+\,)",r"+1-\1\0", record)
    search_pa=re.search(r"(\,[\d-]+\,)",record)
    #print(search_pa[0])
    #print(search_pa[1])
    print(new_record)

print(transformrec("Sabrina Green,802-867-5309,System Administrator"))

輸出

O/P : Sabrina Green,+1-802-867-5309, System Administrator.

在这种情况下,在号码802-867-5309后面有一个额外的空格。

python regex python-3.x re
1个回答
5
投票

这不是一个空格,而是一个... ... NUL 字。从 手册:

\number

匹配相同编号的组的内容。各组的编号从1开始,例如: (.+) \1 匹配 'the the''55 55'但不是 'thethe' 注意组后的空格)。这个特殊序列只能用于匹配前99组中的一组。 如果数字的第一个数字是0,或者数字的长度是3个八位数,则不会被解释为组匹配,而是解释为带有八进制值的数字字符。. 在字符类的'['和']'中,所有的数字转义都被视为字符。

你有一个 \0 在您的替换中,您的替换被解读为""。NUL 字符。解决的办法就是把它去掉。

new_record = re.sub(r"([\d-]+\,)",r"+1-\1", record)

4
投票

你有一个奇怪的参考 \0. 删除它。

re.sub(r"([\d-]+\,)",r"+1-\1", record)

而且,正如有人建议的那样: return 新值,不要打印。

© www.soinside.com 2019 - 2024. All rights reserved.