这个脚本比较制表符分隔的 csv 文件缺少什么?
What's missing to have this script compare tab delimited csv files?
我正在编写一个 python 脚本来比较 csv 文件。但是它只适用于逗号分隔,即使分隔符设置为 \t...
d='\t'
for x in range(0, columns):
with open(mfile, 'rb') as master:
with open(cfile, 'rb') as check:
master_indices = dict((r[x], i) for i, r in enumerate(csv.reader(master, delimiter=d)))
check_reader = csv.reader(check, delimiter=d)
for row in check_reader:
index = master_indices.get(row[x])
if index is not None:
T += 1
matches += 1
else:
T += 1
编辑:
测试用例 1...
m文件:
a,1
a,2
c文件:
x,2
x,z
with d=','
读取两列并且 returns 1 匹配 T of 4.
测试用例 2...
m文件:
a 1
a 2
c文件:
x 2
x z
with d='\t'
读取第 1 列 returns 0 与 T of 2 匹配。
编辑:使用提供的、有效的和接受的答案:
for x in range(0, columns):
with open(mfile, 'rb') as master:
dialect = csv.Sniffer().sniff(master.read(1024))
master.seek(0)
master_reader = csv.reader(master, dialect)
with open(cfile, 'rb') as check:
dialect = csv.Sniffer().sniff(check.read(1024))
check.seek(0)
check_reader = csv.reader(check, dialect)
master_indices = dict((r[x], i) for i, r in enumerate(master_reader))
for row in check_reader:
index = master_indices.get(row[x])
if index is not None:
T += 1
matches += 1
else:
T += 1
您可以使用 csv.Sniffer 获取 csv 文件的方言:
with open(mfile, 'rb') as master:
dialect = csv.Sniffer().sniff(master.read(1024))
master.seek(0)
master_reader = csv.reader(master, dialect)
with open(cfile, 'rb') as check:
dialect = csv.Sniffer().sniff(check.read(1024))
check.seek(0)
check_reader = csv.reader(check, dialect)
我正在编写一个 python 脚本来比较 csv 文件。但是它只适用于逗号分隔,即使分隔符设置为 \t...
d='\t'
for x in range(0, columns):
with open(mfile, 'rb') as master:
with open(cfile, 'rb') as check:
master_indices = dict((r[x], i) for i, r in enumerate(csv.reader(master, delimiter=d)))
check_reader = csv.reader(check, delimiter=d)
for row in check_reader:
index = master_indices.get(row[x])
if index is not None:
T += 1
matches += 1
else:
T += 1
编辑:
测试用例 1...
m文件:
a,1
a,2
c文件:
x,2
x,z
with d=','
读取两列并且 returns 1 匹配 T of 4.
测试用例 2...
m文件:
a 1
a 2
c文件:
x 2
x z
with d='\t'
读取第 1 列 returns 0 与 T of 2 匹配。
编辑:使用提供的、有效的和接受的答案:
for x in range(0, columns):
with open(mfile, 'rb') as master:
dialect = csv.Sniffer().sniff(master.read(1024))
master.seek(0)
master_reader = csv.reader(master, dialect)
with open(cfile, 'rb') as check:
dialect = csv.Sniffer().sniff(check.read(1024))
check.seek(0)
check_reader = csv.reader(check, dialect)
master_indices = dict((r[x], i) for i, r in enumerate(master_reader))
for row in check_reader:
index = master_indices.get(row[x])
if index is not None:
T += 1
matches += 1
else:
T += 1
您可以使用 csv.Sniffer 获取 csv 文件的方言:
with open(mfile, 'rb') as master:
dialect = csv.Sniffer().sniff(master.read(1024))
master.seek(0)
master_reader = csv.reader(master, dialect)
with open(cfile, 'rb') as check:
dialect = csv.Sniffer().sniff(check.read(1024))
check.seek(0)
check_reader = csv.reader(check, dialect)