【发布时间】:2015-12-31 22:08:47
【问题描述】:
我想将 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 与自身进行比较。对解决方案有什么建议吗?
【问题讨论】:
-
你的缩进看起来很奇怪,但我认为在你的真实代码中它不是这样的。您能否尝试在 compare_row 的第一个循环内创建一个新的阅读器,而不是为两个循环使用相同的阅读器?