我试图解析一个文本文件两次,但是第二个for循环无法工作,尽管它与前一个代码相同。有人知道为什么吗?我已经盯着这段代码已经有一段时间了。所以先谢谢!
我的代码的主要基础是该代码首先在第一个for循环中检索唯一日期,然后在第二个for循环中使用唯一日期来查找每个唯一日期支付的总现金。
[注意:我已放置打印语句以用于调试。]
这里有3行,格式为'transactions.txt',每行之间用标签:
25-03-2016麦当劳$ 21.30
2016年9月12日肯德基$ 59.43
2017年8月1日BurgerKing 47.56美元
输入代码
with open('transactions-output-2.txt','w') as out_file:
with open('transactions.txt', 'r') as in_file:
unique_dates = []
for row in in_file:
line = row.strip('\n').split('\t')
date = line[0]
if date not in date_list:
unique_dates.append(date)
for ref_date in unique_dates:
print(ref_date)
for row in in_file:
line = row.strip('\n').split('\t')
print(line[0])
输出代码
25-03-2016
09-12-2016
08-01-2017
答案 0 :(得分:1)
每个open()
只能对打开的文件进行一次迭代。这是因为in_file
对象在迭代器中,当第一个for循环运行时,该对象已耗尽。
为避免这种情况,您可以在处理文件之前将其读入列表:
with open('transactions-output-2.txt','w') as out_file:
with open('transactions.txt', 'r') as in_file:
file_lines = in_file.readlines()
unique_dates = []
for row in file_lines:
line = row.strip('\n').split('\t')
date = line[0]
if date not in date_list:
unique_dates.append(date)
for ref_date in unique_dates:
print(ref_date)
for row in file_lines:
line = row.strip('\n').split('\t')
print(line[0])