【问题标题】:Extract and store the difference between two or more strings [duplicate]提取并存储两个或多个字符串之间的差异[重复]
【发布时间】:2021-07-02 18:08:22
【问题描述】:

我需要一些帮助来弄清楚如何打印两个字符串之间的差异。我需要输出来打印两个字符串之间的确切字符差异,有时不止一个字符。字符串示例:

str1 = "0074574-1"
str2 = "0074574+1"

这里的区别是"+""-" 的位置。 另一个例子是

str1 = "27785-74-1"
str2 = "27785%F274-1"

在此示例中,"-" 被字符 "%F2" 替换。 我需要一个代码,其中包含搜索 str1str2 之间差异的输出为:

diff_between_str1_str2 = "-"

diff_between_str1_str2 = "%F2"

有人可以指出我可以从哪里开始寻找的正确方向吗?

【问题讨论】:

  • difflib,特别是difflib.ndiff()
  • 除非您正在对两个等长字符串进行逐个字符的比较,您的示例表明您不是,否则这是一个涉及edit distance 概念的大话题。对此没有单一、完美的答案,因此您可能需要进行一些研究。有一些图书馆可以帮助解决这个问题。
  • 这听起来像是 Levenshtein 差分算法的变体。这是我在上面找到的一篇好帖子:blog.paperspace.com/….

标签: python variables


【解决方案1】:

您可以申请difflib.ndiff():

from difflib import ndiff

str1 = "27785-74-1"
str2 = "27785%F274-1"
diff_between_str1_str2 = "".join(s[-1] for s in ndiff(str2, str1) if s[0] == "+")

在内部ndiff() 使用基于Gestalt Pattern Matchingdifflib.SequenceMatcher

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多