gpt4 book ai didi

Python CSV 阅读器 - 在一列中将每一行与另一行进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:49 26 4
gpt4 key购买 nike

我想将 CSV 文件的每一行与其自身以及一列中的每一行进行比较。
例如,如果列值是这样的:

值_1
值_2
值_3

代码应该选择 Value_1 并将其与 Value_1(是的,也与它本身)、Value_2 进行比较,然后与 Value_3 进行比较。然后它应该选取 Value_2 并将其与 Value_1、Value_2、Value_3 等进行比较。

我为此编写了以下代码:

csvfile = "c:\temp\temp.csv"
with open(csvfile, newline='') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
for compare_row in reader:
if row == compare_row
print(row,'is equal to',compare_row)
else:
print(row,'is not equal to',compare_row)

代码给出以下输出:

['Value_1'] is not equal to ['Value_2']
['Value_1'] is not equal to ['Value_3']

代码将 Value_1 与 Value_2 和 Value_3 进行比较,然后停止。循环 1 不选择 Value_2 和 Value_3。简而言之,第一个循环在停止之前似乎只迭代了 CSV 文件的第一行。

此外,我无法使用此代码将 Value_1 与自身进行比较。对解决方案有什么建议吗?

最佳答案

我会建议将 CSV 加载到内存中,但考虑到大小,这不是一个选项。

相反,您可以将它想象成一条 SQL 语句,对于左表中的每一行,您都希望将其与右表中的值相匹配。因此,您只需扫描一次 left 表,然后开始重新扫描 right 表,直到 left 到达 EoF。

with open(csvfile, newline='') as f_left:
reader_left = csv.reader(f_left, delimiter=',')
with open(csvfile, newline='') as f_right:
reader_right = csv.reader(f_right, delimiter=',')
for row in reader_left:
for compare_row in reader_right:
if row == compare_row:
print(row,'is equal to',compare_row)
else:
print(row,'is not equal to',compare_row)
f_right.seek(0)

关于Python CSV 阅读器 - 在一列中将每一行与另一行进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com