我正在使用此代码来查找两个csv列表之间的差异,并提出一些格式问题.这可能是一个简单的修复,但我是新的,并试图学习和有很多问题.
import difflib
diff=difflib.ndiff(open('test1.csv',"rb").readlines(), open('test2.csv',"rb").readlines())
try:
while 1:
print diff.next(),
except:
pass
Run Code Online (Sandbox Code Playgroud)
代码工作正常,我得到我正在寻找的输出:
Group,Symbol,Total
- Adam,apple,3850
? ^
+ Adam,apple,2850
? ^
bob,orange,-45
bob,lemon,66
bob,appl,-56
bob,,88
Run Code Online (Sandbox Code Playgroud)
我的问题是如何清理格式化,我可以将Group,Symbol,Total编入sperate列,并将下面的文本排成一行吗?
我也可以改变吗?代表我确定的文字?例如测试1和测试2表示它来自哪个表?
谢谢你的帮助
使用difflib.unified_diff提供更清洁的输出,见下文.
此外,双方difflib.ndiff并difflib.unified_diff返回一个迥异对象,它是一个生成的对象,你可以在直接使用for循环,而且知道什么时候退出,这样你就不必自己处理异常.NB; 后面的逗号line是为了防止print添加另一个换行符.
import difflib
s1 = ['Adam,apple,3850\n', 'bob,orange,-45\n', 'bob,lemon,66\n',
'bob,appl,-56\n', 'bob,,88\n']
s2 = ['Adam,apple,2850\n', 'bob,orange,-45\n', 'bob,lemon,66\n',
'bob,appl,-56\n', 'bob,,88\n']
for line in difflib.unified_diff(s1, s2, fromfile='test1.csv',
tofile='test2.csv'):
print line,
Run Code Online (Sandbox Code Playgroud)
这给出了:
--- test1.csv
+++ test2.csv
@@ -1,4 +1,4 @@
-Adam,apple,3850
+Adam,apple,2850
bob,orange,-45
bob,lemon,66
bob,appl,-56
Run Code Online (Sandbox Code Playgroud)
所以,你可以清楚地看到哪些行之间的变化test1.csv和test1.csv.