首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python -替换较大语料库中的字符串

python -替换较大语料库中的字符串
EN

Stack Overflow用户
提问于 2022-01-27 07:01:37
回答 6查看 76关注 0票数 0

我正在寻找一个原生python解决方案,它允许我在字符串列表中的任何地方替换短语。基本上,这看起来是:

代码语言:javascript
复制
text_array = ['the store has a piano','dulcimer players are popular with the ladies','guitar','rock legends dont shy away from this gibson model or this PRS electric','guitar','fender guitar','PRS electric',...]

我的目标是在text_array中找到短语(准确地),并将它们替换为我在调用thesaurus的dict中映射的字符串逻辑

代码语言:javascript
复制
thesaurus = {'gibson model':'guitar', 'fender guitar':'guitar', 'PRS electric':'guitar'}

问题

我将如何迭代text_array的每个元素,并替换所有出现在thesaurus中标记的短语的地方?(注:我只想替换精确的匹配,并保留其余的字符串在-tact中)。

期望产出:

代码语言:javascript
复制
text_array = ['the store has a piano','dulcimer players are popular with the ladies','guitar','rock legends dont shy away from this guitar or this guitar', 'guitar','guitar','guitar']
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2022-01-27 07:38:12

这将是我的方法。这个不影响原始的text_array

代码语言:javascript
复制
text_array = ['the store has a piano','dulcimer players are popular with the ladies','guitar','rock legends dont shy away from this gibson model or this PRS electric','guitar','fender guitar','PRS electric']
thesaurus = {'gibson model':'guitar', 'fender guitar':'guitar', 'PRS electric':'guitar'}

res = []
for text in text_array:
    for key in thesaurus:
        text = text.replace(key, thesaurus[key])
    res.append(text)
print(res)
票数 2
EN

Stack Overflow用户

发布于 2022-01-27 07:29:45

您可以使用下面的代码片段来获得预期的输出:

代码语言:javascript
复制
text_array = ['the store has a piano','dulcimer players are popular with the ladies','guitar','rock legends dont shy away from this gibson model or this PRS electric','guitar','fender guitar','PRS electric',...]

thesaurus = {'gibson model':'guitar', 'fender guitar':'guitar', 'PRS electric':'guitar'}


for index, val in enumerate(text_array):
    # Checking if key exist in list item

    for key in list(thesaurus.keys()):
        if key in val:
            # Updating List item value
            text_array[index] = text_array[index].replace(key, thesaurus[key])
票数 1
EN

Stack Overflow用户

发布于 2022-01-27 07:32:47

使用此代码

代码语言:javascript
复制
text_array = ['the store has a piano','dulcimer players are popular with the ladies','guitar','rock legends dont shy away from this gibson model or this PRS electric','guitar','fender guitar','PRS electric']
thesaurus = {'gibson model':'guitar', 'fender guitar':'guitar', 'PRS electric':'guitar'}
for key in thesaurus.keys():
    for i,item in enumerate(text_array):
        text_array[i]=item.replace(key,thesaurus[key])
print(text_array)

结果:

代码语言:javascript
复制
['the store has a piano', 'dulcimer players are popular with the ladies', 'guitar', 'rock legends dont shy away from this guitar or this guitar', 'guitar', 'guitar', 'guitar']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70874517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档