【问题标题】:how to replace the uncommon characters between two strings with 'x'?如何用'x'替换两个字符串之间的不常见字符?
【发布时间】:2016-08-06 00:34:55
【问题描述】:

我有一个字符串计数字典:{"abcd12efgh":1,"abcd23efgh":1,"abcd567efgh":1,"abcdkljefgh":1, "dog":1, "cat":1}

我需要将相似的字符串组合在一起并聚合计数以获得类似:{"abcdxxxefgh":4,"dog":1,"cat":1}.

在 Python 中实现此目的最优雅的方式是什么?

【问题讨论】:

  • 这实际上取决于您如何决定将单词分类为足够相似以进行分组。你现在怎么做对我来说没有意义。 'dog' == 'dig' == 'dug' 在这种分组方法中会不会?
  • 我认为在担心以优雅的方式进行操作之前,您应该担心以任何方式进行操作。
  • @Vikas,我想人们会否决这个问题,因为 Stack Overflow 是关于提出更具体的问题。这似乎是一种摆脱为自己编码的方式。

标签: python string pattern-matching


【解决方案1】:

答案取决于您假设两个键如何匹配,但是您可以让一个单独的函数来决定。我写了一个可能是您正在寻找的内容:检查密钥是否具有特定的前缀和后缀。您可以添加更多约束,例如,中间的子字符串具有特定长度或其他模式。

def transform(key):
    prefix, suffix = 'abcd', 'efgh'
    transformed = key
    if key.startswith(prefix) and key.endswith(suffix):
        transformed = prefix + 'X' + suffix
    return transformed

new_d = {}
for k in d:
    new_d[transform(k)] = new_d.get(transform(k), 0) + d[k]

#{'abcdXefgh': 4, 'cat': 1, 'dog': 1}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多