빠른 더러운 :
# Since order of the names doesn't matter, we can use the set() option
matching_names = set(sheet_one_names) & set(sheet_one_names)
...
# Here, order does matter since we're comparing rowdata..
# not just if they match at some point.
matching_rowdata = [i for i, j in zip(columndata_one, columndata_two) if i != j]
참고 :이
xlrd
를 통해 시트 1 열 이름을 얻고 두 번째 시트 같은, 당신이 앞으로 몇 일을 한 적이 있다고 가정 ,
- 두 개의 서로 다른 변수에서 두 시트의 행 데이터를 가져옵니다.
이것은 당신에게 아이디어를 제공하기위한 것입니다.
[...] 옵션 (두 번째 것)을 수행하면 행의 길이가 동일해야한다는 점에 유의하십시오. 그렇지 않으면 건너 뜁니다. 이것은 MISS-MATCH 시나리오입니다. 역순으로 데이터 흐름을 찾습니다.
이 느린하지만 기능적인 솔루션입니다 : 나는 내 일에 엑셀 시트에 대한 작업 꽤 많은 일을했습니다
column_a_name = ['Location', 'Building', 'Location']
column_a_data = [['Floor 1', 'Main', 'Sweden'],
['Floor 2', 'Main', 'Sweden'],
['Floor 3', 'Main', 'Sweden']]
column_b_name = ['Location', 'Building']
column_b_data = [['Sweden', 'Main', 'Floor 1'],
['Norway', 'Main', 'Floor 2'],
['Sweden', 'Main', 'Floor 3']]
matching_names = []
for pos in range(0, len(column_a_name)):
try:
if column_a_name[pos] == column_b_name[pos]:
matching_names.append((column_a_name[pos], pos))
except:
pass # Index out of range, column length are not the same
mismatching_data = []
for row in range(0, len(column_a_data)):
rowa = column_a_data[row]
rowb = column_b_data[row]
for name, _id in matching_names:
if rowa[_id] != rowb[_id] and (rowa[_id] not in rowb or rowb[_id] not in rowa):
mismatching_data.append((row, rowa[_id], rowb[_id]))
print mismatching_data
.. 작업의 이런 종류의 실제 알고리즘은 없습니다하지만 무엇에 따라 달라집니다 결과는 다음과 같아야합니다. 일치하지 않는 열 이름을 무시하거나 공동 목록으로 결합합니까? – Torxed
사실 일치하는 열의 일치하지 않는 셀을 강조 표시하고 일치하지 않는 전체 열을 강조 표시하려고합니다. 두 번째 시트에 누락 된 열 또는 추가 열을 의미합니다. 일치하지 않는 열 이름을 결합 목록에 결합하는 용도는 무엇입니까? – user1711699
그래서, ** 1 : ** 일치하는 열 이름을 표시 ** 2 : **이 두 열 내에서 일치하지 않는 NON 값을 강조 하시겠습니까? – Torxed