为什么python中的re.sub在替换后添加一个空格?如何摆脱空间?

为什么python中的re.sub在替换后添加一个空格?如何摆脱空间?,python,string,Python,String,输出 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 Gree

输出

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"))

在本例中,在802-867-5309号后面有一个额外的空格,

您对
\0
有一个奇怪的引用。删除它:

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

而且,正如已经有人建议的那样,
返回新值,不要打印它。

您对
\0
有一个奇怪的引用。删除它:

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

而且,正如已经有人建议的那样,
返回新值,不要打印它。

它不是空格,而是一个
num
字符。从:

\number

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

您的替换项中有一个
\0
,它被解释为
NUL
字符。解决方法就是删除它

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

它不是一个空格,而是一个
NUL
字符。从:

\number

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

您的替换项中有一个
\0
,它被解释为
NUL
字符。解决方法就是删除它

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

我也运行了它,在代码中没有问题,并且在没有空格的情况下给出
transformrec
实际上不会返回任何内容。它只打印
new\u记录
,并返回
None
。因此,在调用者中打印返回值没有意义。
new\u record=re.sub(r“([\d-]+\,)”,r“+1-\1”,record)
没有空间,它会将\0从替换中移除pattern@vish哪个python版本?python2和3都有空间。。。就在这里:
…309,系统…
测试在其中打印空格我想我们谈论的是终端在打印时显示零字节的不同(
\0
)。在zsh/iterm2/osx上没有打印空格。我也运行了它,代码中没有问题,并且在没有空格的情况下给出了
transformrec
实际上不会返回任何内容。它只打印
new\u记录
,并返回
None
。因此,在调用者中打印返回值没有意义。
new\u record=re.sub(r“([\d-]+\,)”,r“+1-\1”,record)
没有空间,它会将\0从替换中移除pattern@vish哪个python版本?python2和3都有空间。。。就在这里:
…309,系统…
测试在其中打印空格我想我们谈论的是终端在打印时显示零字节的不同(
\0
)。在zsh/iterm2/osx上没有打印空格。谢谢,正如您所说,问题出在\0上。@vinoths无需担心-我很高兴能提供帮助。谢谢,正如您所说,问题出在\0上。@vinoths无需担心-我很高兴能提供帮助。