【问题标题】:How to compare these strings in python?如何在python中比较这些字符串?
【发布时间】:2017-01-04 12:18:55
【问题描述】:

我有以下字符串:

1679.2235398,-1555.40390834,-1140.07728186,-1999.85500108

我正在使用隐写技术将其存储在图像中。现在,当我从图像中取回它时,有时我会以完整的形式将其取回,对此我没有任何问题。在其他情况下,检索到的数据没有被完全检索到(由于图像上发生了修改/更改),因此结果如下所示:

1679.2235398,-1555.I8\xf3\x1cj~\x9bc\x13\xac\x9e8I>[a\xfdV#\x1c\xe1\xea\xa0\x8ah\x02\xed\xd1\x1c\x84\x96\xe2\xfbk*8'l

请注意,只有“1679.2235398,-1555”。被正确检索,而其余的是发生修改的地方。 现在,我如何计算(百分比)我成功检索了多少? 由于长度不一样,无法逐字比较,看来需要对修改后的数据进行切片或转换成其他形式来匹配原始数据的长度。

有什么建议吗?

【问题讨论】:

  • 使用输出中显示的原始字符串的百分比是否不起作用?
  • 不确定我明白你的意思,但我想要的是这样的:1=1,6=6,等等。

标签: python string compare hex


【解决方案1】:

这在很大程度上取决于您的问题的背景,但您有很多选择。

如果你的结果总是这样,你可以找到longest common subsequence,然后除以原始字符串的长度得到一个百分比。

Levenshtein distance 是比较字符串的常用方法,作为将一个字符串转换为另一个字符串所需的字符数。 This question 有几个答案讨论如何将其转化为百分比。

如果您不希望字符串总是以相同的顺序出现,this answer 建议使用一些用于 DNA 工作的算法。

【讨论】:

  • 非常有趣的方法。我将尝试这两种方法,看看结果如何。谢谢杰姆
【解决方案2】:

这真的取决于.. 我的解决方案是这样的:

我会从所有可能的最长字符串开始,并检查它们是否在新字符串中 if original_string in new_string: 'something happens here'. 这将在一个循环中,该循环会减小原始字符串的大小并获得所有可能的组合。所以下一个 wld 是 N-1 long 并且有 2 种可能的组合(切断第一个数字或最后一个数字),依此类推,直到您达到特定阈值或 1 长字符串。
循环可以在 if 条件内存储您在日志中找到的最长字符串,然后您可以检查结果。希望对您有所帮助。

【讨论】:

  • 看来这是解决它的好方法。非常感谢,我会测试它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-20
  • 2013-11-26
  • 2016-08-19
  • 1970-01-01
  • 2012-06-14
  • 2018-08-29
  • 2022-09-30
相关资源
最近更新 更多