Python 使用re.sub替换字符-保留一个字符

Python 使用re.sub替换字符-保留一个字符,python,regex,string,Python,Regex,String,我正在尝试修复表中损坏的电子邮件记录。有电子邮件,例如:'google@google.comyahoo@yahoo.com“但是可以有一封像这样的邮件”google@google.com'. 在我看来,最好的方法是使用re.sub。但是有一个小问题。如果有记录: email=”google@google.comyahoo@雅虎网站“ 我不能简单地做replace('.com','.com'),因为它会影响两个'.com'子字符串。所以我想使用re.sub('.com\w','.com\w',em

我正在尝试修复表中损坏的电子邮件记录。有电子邮件,例如:'google@google.comyahoo@yahoo.com“但是可以有一封像这样的邮件”google@google.com'. 在我看来,最好的方法是使用re.sub。但是有一个小问题。如果有记录:

email=”google@google.comyahoo@雅虎网站“

我不能简单地做replace('.com','.com'),因为它会影响两个'.com'子字符串。所以我想使用
re.sub('.com\w','.com\w',email)
只替换那些不在记录末尾的'.com'子字符串。问题是我想在那里保留一个\w值

print re.sub('.com\w','.com\w',email)

而不是

>>> google@google.com, yahoo@yahoo.com

有谁能给我一个如何使它工作的建议吗?(我想用逗号和空格分隔电子邮件)

使用捕获组并在替换呼叫中反向引用组:

>>> import re
>>> email = 'google@google.comyahoo@yahoo.com'
>>> re.sub(r'\.com(\w)', '.com, \\1', email)
'google@google.com, yahoo@yahoo.com'

回想一下什么是匹配的。反引用被指定为反斜杠(
\
);后跟一个数字,表示要调用的组的编号。

使用捕获组并在替换呼叫中反向引用组:

>>> import re
>>> email = 'google@google.comyahoo@yahoo.com'
>>> re.sub(r'\.com(\w)', '.com, \\1', email)
'google@google.com, yahoo@yahoo.com'
x="google@google.comyahoo@yahoo.com"
print re.sub(r"(?<=\.com)(?=\w)",", ",x)
回想一下什么是匹配的。反引用被指定为反斜杠(
\
);后跟一个数字,表示要召回的组的编号。

x=”google@google.comyahoo@雅虎网站“
x="google@google.comyahoo@yahoo.com"
print re.sub(r"(?<=\.com)(?=\w)",", ",x)
打印re.sub(r“(?
x=”google@google.comyahoo@雅虎网站“
列印第(r)款(?