0

我有 2 组数据。

第一个用作字典的有两列keywordid180000 行。下面是一些示例数据。

另外请注意,有些关键字小到 2 个字符,大到 700 个字符,并且没有固定的关键字长度。虽然 id 具有固定的 3 位数字模式,数字前后都有一个井号。

keyword         id
salesman        #123#
painter         #486#
senior painter  #215#

第二个文件有一列,corpus它有 2200 万条记录,每条记录的长度在 10 到 1000 之间变化。下面是可以视为输入的示例数据。

corpus
I am working as a salesman. salesmanship is not my forte, however i have become a good at it
I have been a painter since i was 19
are you the salesman?

输出

corpus
I am working as a #123#. salesmanship is not my forte, however i have become a good at it
I have been a #486# since i was 19
are you the #123#?

请注意,我想替换完整的单词而不是重叠的单词。所以在第一句salesman被替换为#123#where assalesmanship没有被替换为#123#ship. 这需要我'\b'keyword. 这就是正则表达式对于搜索功能很重要的原因

所以这是对数百万行的搜索和替换操作,并且有正则表达式。我读过 Python 中的 Mass 字符串替换?在 Python 3 中加速数百万个正则表达式替换,但是我需要几天的时间来完成这个查找和替换,因为这是一项每周任务,所以我负担不起。我希望能够更快地做到这一点。下面是我的代码

Id = df_dict.Id.tolist()
#convert to list with regex
keyword = [r'\b'+ x + r'\b' for x in df_dict.keyword]
#light on memory to clean file
del df_dict
#replace
df_corpus["corpus_text"].replace(keyword, Id, regex=False,inplace=True)
4

0 回答 0