python - 在例如数据框column1中的txt文件中查找字符串并将其替换为数据框column2中的字符串
问题描述
我想通过以下方式从 txt 文件中替换 python 中的字符串:
应在 txt 文件中搜索 column1 中来自 pandas 数据框的单词,并替换为来自第 2 列的同一行中的单词。
导入txt文件和数据框是没有问题的。
例如:
原文:
这是我要更改的第一句话。这是我要更改的字母句子。
数据框:
column1 column2
0 first last
1 alpha beta
期望的结果:
这是我要更改的最后一句话。这是我要更改的beta语句。
我想到了一个使用 column1 作为键和 column2 作为值的字典,但我无法让它工作。半天的搜索没有给我带来任何结果,所有搜索结果都与替换数据框中的值有关,这不是我的问题。
解决方案
从两列创建字典,然后用 regex 替换re.sub
:
import re
d = df.set_index('column1')['column2'].to_dict()
print (d)
{'first': 'last', 'alpha': 'beta'}
s = 'This is the first sentence I want to change. This is the alpha sentence I want to change.'
pat = re.compile(r'\b(' + '|'.join(d.keys()) + r')\b')
out = pat.sub(lambda x: d[x.group()], s)
print (out)
This is the last sentence I want to change. This is the beta sentence I want to change.
如果总是可以替换一个单词,也可以使用:
for key in d:
s = s.replace(key, d[key])
print (s)
This is the last sentence I want to change. This is the beta sentence I want to change.
推荐阅读
- json - 如何以角度迭代json?
- css - 如何根据 API 接收到的时间更改 CSS 类
- angular - 将日期修复到 ng-pick-datetime 中的特定时区
- scala - 关于在scala中表达的简单模式的非法开始
- google-people-api - 如何只获取真实的联系人照片?
- jquery - JQuery 使用 For 更改同一 HTML 表格单元格上的值
- reactjs - 任务 :app:transformNativeLibsWithMergeJniLibsForDebug 失败
- animation - 使用图像文件而不是 SVG 为书法制作动画
- spring - 如何从弹簧过滤器返回响应为 Json?
- python - 调用 logging.getLogger(__name__) logger.handlers 后的烧瓶丢失