Python 如何在特定字符之前从字符串中删除特殊字符?
我有一个Python 如何在特定字符之前从字符串中删除特殊字符?,python,regex,pandas,special-characters,str-replace,Python,Regex,Pandas,Special Characters,Str Replace,我有一个df,它有一个名为EMAIL的列,其中包含各种电子邮件地址。我想删除@前面的所有特殊字符,特别是.、-、和u,并添加一个新列new\u EMAIL。例如,如果df['EMAIL']='ab\u cd_123@email.com“,我想要df['NEW\u EMAIL']=”abcd123@email.com“ 我能够用下面的代码成功地删除句点,但似乎无法删除同一行代码中的下划线或破折号。现在,我重复同一行代码来删除这三个特殊字符,这非常难看。谁能帮我一把吗?提前谢谢你的帮助 df['NE
df
,它有一个名为EMAIL
的列,其中包含各种电子邮件地址。我想删除@前面的所有特殊字符,特别是.、-、和u,并添加一个新列new\u EMAIL
。例如,如果df['EMAIL']='ab\u cd_123@email.com“
,我想要df['NEW\u EMAIL']=”abcd123@email.com“
我能够用下面的代码成功地删除句点,但似乎无法删除同一行代码中的下划线或破折号。现在,我重复同一行代码来删除这三个特殊字符,这非常难看。谁能帮我一把吗?提前谢谢你的帮助
df['NEW_EMAIL'] = df.EMAIL.str.replace(r'\.(?!.{1,4}$)','', regex = True)
df['NEW_EMAIL'] = df.NEW_EMAIL.str.replace(r'\.(?!.{1,4}$)','', regex = True)
df['NEW_EMAIL'] = df.NEW_EMAIL.str.replace(r'\.(?!.{1,4}$)','', regex = True)
你可以用
df['NEW_EMAIL']=df['EMAIL'].str.replace(r'[.[u-](?=[^@]*@'),,regex=True)
看。详情:
-a[.-]
,
或
字符-
-一种正向前瞻,要求存在除(?=[^@]*@)
以外的任何零个或多个字符,然后在当前位置右侧立即出现一个@
字符@
df['NEW_EMAIL']=df['EMAIL'].str.replace(r'[\W_](?=[^@]*@'),regex=True)
参见熊猫测试:
>>将熊猫作为pd导入
>>>df=pd.DataFrame({'EMAIL':['ab_cd_123@email.com","ab_cd.12",-3@email.com']})
>>>df['EMAIL'].str.replace(r'[.\u-](?=[^@]*@'),,regex=True)
0abcd123@email.com
1.abcd123@email.com
名称:电子邮件,数据类型:对象
这正是我一直在寻找的!非常感谢你的帮助@casi_cielo32如果您想删除其中的任何特殊字符,请将模式中的[.\u-]
替换为[\W\u]
。我在答案中添加了这个版本,因为它可能对其他人有用。