我正在尝试比较两个excel文档,它们由大约6000行和4列组成,第一列是域名,另外三列是注释,其中一个文档更新了某些列中的注释,最后我希望此脚本像批更新新注释一样工作过时的。
到目前为止,我编写的代码将打开文档并将它们添加到两个单独的列表中:
import csv
newlist = csv.reader(open('newcomments.csv','rU'), dialect='excel')
export = csv.reader(open('oldcomments.csv', 'rU'), dialect='excel')
for row in newlist:
olddomain=[]
domain = row[0:]
olddomain.append(domain)
for item in olddomain:
print item
for row in export:
newdomain=[]
domain= row[0:]
newdomain.append(domain)
for item in newdomain:
print item
列表的输出如下所示(第二列通常为空):
['example.com', '', 'excomment', 'Parked Page']
当我试图比较这些列表时,我尝试了如下方法:
if item in olddomain != item in newdomain:
print "no match"
else:
print "match"
但这似乎不起作用,例如,两个文件中的第一行包含完全相同的数据,但代码返回“不匹配”,两个文件中的第二行也包含相同的数据,但代码返回“匹配”
我将行保存到列表中的方式有问题吗?还是我还缺少其他东西?我想有更好的方法可以做到这一点,但我用它作为学习更多python的借口!
谢谢你的时间。
你似乎在试图将旧的域名列表与新的域名列表进行比较。在建立了这些列表之后,您需要查看列表之间是否存在共性。
在这种情况下,我认为a^{} 提供了更丰富的功能,使您的生活更轻松。示例:
重写部分代码以使用集合如下所示:
你问的密码是:
我在确定使用
set()
还是list()
时使用的一般规则:编辑
既然你在问为什么我发布的代码会抛出一个
TypeError
,如果你以我的方式分配row
,那么你需要使用row[0]
,而不是row[0:]
我改变了我的例子来反映这一点,因为我怀疑这就是问题所在。
你很可能只是错过了偏执狂。请注意,以下两行是相等的,因为
in
和!=
的operator precedences是相等的:你可能想要:
试着让它成为一个集,做和操作。
示例:
在[1]:a=['a','b','c']
在[2]:b=['b','a','c']
在[3]:集合(a)和集合(b)
出[3]:{'a','b','c'}
在[4]:集合(b)==集合(a)&集合(b)
出[4]:对
相关问题 更多 >
编程相关推荐