Я пишу скрипт python для сравнения файлов csv. Однако это работает только через запятую, даже если разделитель установлен в \ т ...Что не хватает, чтобы сравнить этот скрипт csv-файлы с разделителями табуляции?
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
Edit:
Тестовый пример 1 ...
MFile:
a,1
a,2
CFile:
x,2
x,z
с d = ''
читает обе колонки и возвращает 1 матч с Т 4.
тестовый пример 2 ...
MFile:
a 1
a 2
CFile:
x 2
x z
с d = '\ t'
читает столбец 1 возвращается 0 спичек с Т 2.
Edit: Использование ПРЕДОСТАВИЛИ работает и принял ответ:
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
Вы должны показать нам, где установлен 'd'. Также: что значит «не работает» в вашем случае? Вызывает ли ошибка или говорит, что файлы отличаются друг от друга, когда они идентичны? – Mikk
Извините, я добавил, как устанавливается d, либо 'd = '\ t'', либо' d =', ''и тестовые примеры с результатами. – Wafer