Вопрос:
У меня есть файл excel, в котором есть несколько столбцов.
COL 1 | COL 2 | COL 3 ABCD | ABC(D) | CDA AB CD | ABC D | C D — (B) A B C D | (ABCD) | ABCD ABC D | ABDC | ABC D A(BC ) D | AD B — C| AB CD
Я хочу сравнить каждый столбец с каждым другим столбцом и хочу печатать сходства и различия между столбцами.
например:
-
сравнение COL 1 и COL 2
сходства:
None
отличия:
ABCD AB CD A B C D A(BC ) D ABC(D) ABC D (ABCD) ABDC AD B — C
затем сравнение COL 2 и COL 3, а затем сравнение COL 1 и COL 3. Нужно только точное совпадение строк, даже пробел, считающийся несоответствием. Возможно, число столбцов может увеличиться, а сравнение начинается со второй строки столбца.
Как я могу реализовать такое рекурсивное сравнение в Python, которое дает мне быстрый результат обработки?
Ответ №1
Вы можете использовать xlrd. Прежде всего, прочитайте содержимое из своего файла. Во-вторых, сохраните три столбца в три словаря, так как dict работает быстрее в сравнении. В-третьих, выполните сравнительную работу и выведите результат.
Я предлагаю вам проверить API xlrd и написать код самостоятельно. Вот ссылка.
Любые вопросы, не стесняйтесь спрашивать.
РЕДАКТИРОВАТЬ:
Вот пример.
#!/usr/bin/python #-*- coding:utf-8 -*- name = {1:’a’, 2:’b’, 3:’c’} lname = {1:’g’, 2:’b’, 3:’v’} common = {} diff_name = {} diff_lname = {} for key in name.keys(): if name[key] == lname[key]: common[key] = name[key] else: diff_name[key] = name[key] diff_lname[key] = lname[key] print ‘common part is:’, common print ‘diff_name is: ‘, diff_name print ‘diff_lname is: ‘, diff_lname Ответ №2
Алгоритм может быть
for colA in range(0, N): for colB in range (colA + 1, N — 1): compare(colA, colB)