python - 根据正则表达式匹配替换整个字符串

标签 python regex string pandas

我有一个大的 pandas 电子邮件地址数据框,想用“Edu”替换所有 .edu 电子邮件。我想出了一种效率很低的方法,但必须有更好的方法。我就是这样做的:

import pandas as pd
import re
inp = [{'c1':10, 'c2':'gedua.com'},   {'c1':11,'c2':'wewewe.Edu'},   {'c1':12,'c2':'wewewe.edu.ney'}]
dfn = pd.DataFrame(inp)

for index, row in dfn.iterrows():
    try:
        if len(re.search('\.edu', row['c2']).group(0)) > 1:
            dfn.c2[index] = 'Edu'
            print('Education')
    except:
        continue

最佳答案

使用str.contains进行不区分大小写的选择,并使用loc进行赋值。

dfn.loc[dfn.c2.str.contains(r'\.Edu', case=False), 'c2'] = 'Edu'    
dfn

   c1         c2
0  10  gedua.com
1  11        Edu
2  12        Edu

如果您只想替换结尾.edu 的电子邮件,则

dfn.loc[dfn.c2.str.contains(r'\.Edu$', case=False), 'c2'] = 'Edu'

或者,按照 piR 的建议,

dfn.loc[dfn.c2.str.endswith('.Edu'), 'c2'] = 'Edu'

dfn

   c1              c2
0  10       gedua.com
1  11             Edu
2  12  wewewe.edu.ney  

关于python - 根据正则表达式匹配替换整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991483/

相关文章:

python - 按 0-10 的顺序轮换代理数组

python - 在 IPython Notebook 中自动运行 %matplotlib inline

java - 基于逗号的拆分的正则表达式忽略引号内的逗号

php - 正则表达式替换冒号和分号之间的冒号

python - 将for循环输出写入python中的文本文件

python - Pandas MultiIndex 重新排列列

python - 使用正则表达式以逗号分隔南亚编号系统中的大量数字

python - python中的唯一排序

c++ - 从 std::string 解析两个或一个数字

java - 最终静态字符串编译问题。任何建议如何避免?