比较两个文档与Python略有不同

时间:2013-09-14 00:59:30

标签: python list

我有两个大致相同的文档,但是我想忽略一些小的差异。具体来说,我知道有一个十六进制值写为“0xFFFFFFFF”,而另一个将它们作为“FFFFFFFF”

基本上,这两个文件是变量列表,它们的值,它们在记忆中的位置,大小等。

但另一个问题是它们的顺序也不一样。

我尝试了一些方法,一个是将它们全部打包在两个列表列表中,并比较列表列表是否彼此对应,但是变量的数量几乎是100,000,所需的时间是这是荒谬的(大约一个小时的顺序)所以这是行不通的。我对python,甚至是pythonic的做事方式都没有太多的精力,所以如果有一种快速简便的方法,我很抱歉。

我已经阅读了其他一些类似的问题,但他们都假设100%完全相同,而其他事情在我的情况下是不正确的。

基本上,我有两个.txts,其系列行看起来像:

***************************************
Variable: Var_name1
Size: 4
Address: 0x00FF00F0 .. 0x00FF00F3
Description: An awesome variable
..
***************************************

我不在乎描述是否不同,我只是想确保每个变量具有相同的长度并且在同一个地方,地址方面,如果它们有任何区别,我想看到它们。我还想确保一个中的每个变量都出现在另一个变量中。

同样,第一个地址用十六进制基数写,第二个地址用十六进制基数写。它们的顺序不同

---输出---

只要它是人类可读的,我就不关心输出的格式。理想情况下,它是一个.txt文档,其中包含:

"Var_name1 does not exist in list two"
"Var_name2 has a different size. (Size1, Size2)"
"Var_name4 is located in a different place. (Loc1, Loc2)"

1 个答案:

答案 0 :(得分:0)

完全重新编辑
[我最初的建议是使用set,但通过评论进一步讨论让我意识到这是无稽之谈,而字典是真正的解决方案。]

你想要一本字典;键入变量名称;并且值是列表或元组或嵌套字典,甚至是包含大小和地址的对象。您可以将每个变量名称添加到字典中,并根据需要更新值 为了比较这些地址,正则表达式可以做到这一点,但只需str.contains(_)就可以减少开销。