Python Pandas.str.replace Regex应用程序

Python Pandas.str.replace Regex应用程序,python,regex,python-3.x,pandas,replace,Python,Regex,Python 3.x,Pandas,Replace,我正在尝试进行一些数据质量控制,并希望使用Pandas.str.replace方法使用正则表达式将一个字符串替换为另一个字符串。我正在重新格式化一个字符串,它看起来像 #'250 ED ENGLISH DR, BLDG #3 UNIT C,' 对这样的事情: #'250 ED ENGLISH DR, #3C 我使用了以下内容,但pandas没有意识到我正在尝试用正则表达式替换: df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLD

我正在尝试进行一些数据质量控制,并希望使用Pandas.str.replace方法使用正则表达式将一个字符串替换为另一个字符串。我正在重新格式化一个字符串,它看起来像

#'250 ED ENGLISH DR, BLDG #3 UNIT C,'
对这样的事情:

#'250 ED ENGLISH DR, #3C  
我使用了以下内容,但pandas没有意识到我正在尝试用正则表达式替换:

df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLDG #\d* UNIT \S[a-z]*', r'250 ENGLISH DR,' + r'(?<=250 ENGLISH DR, BLDG #)\d*' + r'\S{1,2}$', regex=True)

df.Address=df.Address.str.replace(r'250英语DR,BLDG#\d*UNIT\S[a-z]*,r'250英语DR,+r'(?如果您严格尝试替换单词'BLDG'和'UNIT',这将起作用

df

    Address
0   250 ED ENGLISH DR, BLDG #3 UNIT C
试一试

返回

0    250 ED ENGLISH DR, #3C

如果您严格地试图替换单词“BLDG”和“UNIT”,这将起作用

df

    Address
0   250 ED ENGLISH DR, BLDG #3 UNIT C
试一试

返回

0    250 ED ENGLISH DR, #3C
你应该试试这个

df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLDG #(\d*) UNIT (\S[a-zA-Z]*)', r'250 ENGLISH DR, #\1\2')
你应该试试这个

df.Address=df.Address.str.replace(r'250 ENGLISH DR, BLDG #(\d*) UNIT (\S[a-zA-Z]*)', r'250 ENGLISH DR, #\1\2')

在模式中使用捕获组,在替换中使用反向引用。感谢您的回复。这不是我的替换字符串所做的吗?不,您在替换中使用的是正则表达式模式。在模式中捕获需要保留的部分,并在替换中使用
\n
引用它们,其中
n
是组id。编号以
1
开始。尝试在模式中使用捕获组,并在替换中使用反向引用。感谢您的回复。这不是我的替换字符串所做的吗?不,您在替换中使用的是正则表达式模式。在模式中捕获您需要保留的圆括号部分,在替换中请参阅em with
\n
其中
n
是组id。编号以
1
开始。尝试一下,我突然发现这对于这个特殊字符串来说更简单。令人惊讶的是,你的思维会以多快的速度处理问题。出于好奇,如果我曾经需要使用正则表达式来解决问题,你知道正确的格式吗?谢谢。突然,我发现请注意,这对于这个特殊的字符串来说要简单得多。令人惊讶的是,你的大脑能够以多快的速度处理问题。出于好奇,如果我需要使用正则表达式来解决问题,你知道正确的格式吗?谢谢。@TylerRussell你可以试试这个基于正则表达式的解决方案。谢谢。我会在周一回到办公室后试一试。@TylerRussel你可以试试这个基于正则表达式的解决方案谢谢。我会在周一回办公室的时候试一试。