gpt4 book ai didi

python - 如何在特定字符之前从字符串中删除特殊字符?

转载 作者:行者123 更新时间:2023-12-03 22:59:04 25 4
gpt4 key购买 nike

我有一个 df有一列名为 EMAIL ,其中包含各种电子邮件地址。我想删除所有特殊字符,特别是 @ 之前的 .、- 和 _ 并附加一个新列 NEW_EMAIL .例如,如果 df['EMAIL'] = 'ab_cd_123@email.com' , 我要 df['NEW_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'[._-](?=[^@]*@)', '', regex=True)
regex demo .细节:
  • [._-] - 一个 . , _-字符
  • (?=[^@]*@) - 正向前瞻,需要存在除 @ 之外的任何零个或多个字符然后是 @ char 立即位于当前位置的右侧。

  • 如果您需要替换/删除任何特殊字符 ,你应该使用
    df['NEW_EMAIL'] = df['EMAIL'].str.replace(r'[\W_](?=[^@]*@)', '', regex=True)
    查看 Pandas 测试:
    >>> import pandas as pd
    >>> df = pd.DataFrame({'EMAIL':['ab_cd_123@email.com', 'ab_cd.12-3@email.com']})
    >>> df['EMAIL'].str.replace(r'[._-](?=[^@]*@)', '', regex=True)
    0 abcd123@email.com
    1 abcd123@email.com
    Name: EMAIL, dtype: object

    关于python - 如何在特定字符之前从字符串中删除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67540087/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com