Python-获得字符串之间的区别


问题内容

从两个多行字符串中获取差异的最佳方法是什么?

a = 'testing this is working \n testing this is working 1 \n'
b = 'testing this is working \n testing this is working 1 \n testing this is working 2'

diff = difflib.ndiff(a,b)
print ''.join(diff)

这将产生:

  t  e  s  t  i  n  g     t  h  i  s     i  s     w  o  r  k  i  n  g     
     t  e  s  t  i  n  g     t  h  i  s     i  s     w  o  r  k  i  n  g     1     
+  + t+ e+ s+ t+ i+ n+ g+  + t+ h+ i+ s+  + i+ s+  + w+ o+ r+ k+ i+ n+ g+  + 2

准确获取的最佳方法是:

testing this is working 2

正则表达式是这里的解决方案吗?


问题答案:
a = 'testing this is working \n testing this is working 1 \n'
b = 'testing this is working \n testing this is working 1 \n testing this is working 2'

splitA = set(a.split("\n"))
splitB = set(b.split("\n"))

diff = splitB.difference(splitA)
diff = ", ".join(diff)  # ' testing this is working 2, more things if there were...'

从本质上讲,使每个字符串由一组行组成,并采用集合差-即B中所有不在A中的东西。然后取该结果并将其全部连接到一个字符串中。

编辑:这是说@ShreyasG说的一种糊涂方式-[如果x不在y中,则x用于x] …