求Python专家解答:
对文档1的每一行数据分别与文档2的内容进行遍历比对,比如文档1的第1行数据与文档2的第4行前三个数据相同,那么将文档2的第4行数据输出,相当于根据文档1的数据与文档2的数据相同情况,对文档2的每行进行重新排序,应该怎么操作,请指教
是将文档的第1行与文档2的第4行,然后将文档的第2行与文档2的第5行…… 如此循环下去比较吗?
循环文档一的数值在文档二的哪一行的哪个区间就可以了
不知道你这个问题是否已经解决, 如果还没有解决的话:import csv
# 读取文档1的数据
doc1_data = []
with open('document1.csv', 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
doc1_data.append(row)
# 读取文档2的数据
doc2_data = []
with open('document2.csv', 'r') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
doc2_data.append(row)
# 遍历文档2的每一行数据
output_data = []
for row2 in doc2_data:
# 判断文档1的某一行数据是否与文档2的前三个数据完全相同
for row1 in doc1_data:
if row1[:3] == row2[:3]: # 比较前三个数据
output_data.append(row2)
break # 找到匹配的行后终止循环,避免重复输出
# 根据文档1的数据与文档2的数据相同情况,对文档2的每一行进行重新排序
output_data.sort(key=lambda x: doc1_data.index(x[:3])) # 根据在文档1中的索引进行排序
# 输出结果
with open('output.csv', 'w', newline='') as file:
csv_writer = csv.writer(file)
csv_writer.writerows(output_data)
注意事项: 1. 请将文档1和文档2的文件路径修改为实际的文件路径。 2. 假设文档1和文档2都是以逗号分隔的CSV文件,如果不是,请根据实际情况修改csv.reader
和csv.writer
的参数。 3. 假设文档1和文档2的数据格式一致,前三列是需要比较的数据,如果不是,请根据实际情况修改row1[:3]
和row2[:3]
的索引。 4. 如果文档1的数据重复出现,doc1_data.index(x[:3])
可能返回第一个匹配的索引,如果需要其他规则进行排序,请根据实际情况修改key
参数中的排序规则。