【问题标题】:Using a Dictionary to Replace Values Over a List of Strings使用字典替换字符串列表中的值
【发布时间】:2019-07-26 18:33:45
【问题描述】:

我正在尝试使用字典快速替换列表中每个字符串中的不正确单词。

注意:我正在尝试创建一个自定义函数,我可以创建的唯一解决方案是一组嵌套的“for 循环”,这在计算上是禁止的 考虑到我需要处理的实际数据长度超过 150,000。

考虑一下:

test_combine = ["cat", "dog", "Hello", "Johnny", "You",
 "123_happy_goose", "123_happy", "45_goose", "45_lamegoose"]

现在实际上,这些是地址,但我创建了这个示例问题。我想用字典替换这些:

replace_dic = {"cat":"dog", "_happy_":"_sad_", "_goose\\b":"duck", "Johnny":"john"}

我的文件目前只使用下划线,我在匹配时使用它们以确保仅替换某些情况。示例:如果我只想更改 happy 如果它是一个中间词,我会 re.sub"_happy_" 这样只有 "123_happy_goose" 被更改,而不是 "123_happy."

理想情况下,正确的函数会返回

["dog", "dog", "Addition", "Hello", "john", "You",
 "123_sad_goose", "123_happy", "45_duck", "45_lamegoose"]

【问题讨论】:

  • 那你有没有尝试过?

标签: python regex function string-matching


【解决方案1】:
def replace(lst,dct):
    ar = []
    for i in lst:
        for k in dct.keys():
            i=i.replace(k,dct[k])
        ar.append(i)
    return ar

test_combine = ["cat", "dog", "Hello", "Johnny", "You",
 "123_happy_goose", "123_happy", "45_goose", "45_lamegoose"]

replace_dic = {"cat":"dog", "_happy_":"_sad_", "_goose\\b":"duck", "Johnny":"john"}

print(replace(test_combine,replace_dic))

【讨论】:

  • 正如我在帖子中提到的,我已经使用两个嵌套的 for 循环成功地创建了一个函数。我正在寻找一种更有效的方法来创建这个
猜你喜欢
  • 2021-01-02
  • 1970-01-01
  • 2018-09-11
  • 2018-03-02
  • 2017-07-15
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多