【发布时间】:2020-05-13 08:40:49
【问题描述】:
美好的一天可能有人请帮助我尝试基于第一个值“token”循环遍历 txt 文件,它当前仅在我指定令牌时循环,例如 {600001130260} 文件中有多个令牌在第一个row[0] id 喜欢它来迭代每个标记/行并提取指定的信息。
数据文件如下所示
600001130260|005|||IN|2197|01||20160905210028
600001130260|100|005|00|VAT|VAT|VAT @ 14%|2,150.14
600001130260|100|013|00|TOT|CTOT|Total Due|86,578.93
600001130260|100|014|00|DD|DD|Due Date|2015/09/22|2015/10/15
600001130260|200|019|01||YDACON|Daily average consumption 79.325 kWh||
28002385859|000|||||LT|||T0IQ04960000000016400000000000000||
28002385859|100|005|00|CUR|CUR|Current Charges (Excl. VAT)|304.48
28002385859|100|006|00|VAT|VAT|VAT @ 14%|10.62
28002385859|100|013|00|TOT|CTOT|Total Due|26,451.75
28002385859|100|014|00|DD|DD|Due Date|2015/09/23
28002385859|150||23,149.02|1,686.37|1,233.57|382.79|0.00|26,451.75
这是我的代码
file1 = open(r"C:\Users\isaac.gumbi\Documents\jhb\Full test file.txt", 'r')
file2 = ""
with file1 as f:
for line in f:
tokens = line.split("|")
keys = {'600001130260','118002191517','CTOT', 'CUR', 'Due Date',
'VAT', '020', '030', '010', '040', 'STOT', '000', '005',
'050', '0100', 'BBF', 'INT','CIN', 'CTOT', 'DD', 'YVLEVY',
'YRREM'}
if len(tokens) and tokens[0] in keys and tokens[5] == 'CTOT':
Total_due = ' '.join(tokens[7:8])
if Total_due == '' : Total_Due = "null"
print ("Total_due", Total_due)
这是我当前的输出
('Total_due', '86,578.93\n')
('Total_due', '79,191.18\n')
我希望它给我输出 total_due 而无需我在 [0] 中指定令牌
【问题讨论】:
-
“我希望它在不指定
tocken[0] in keys的情况下给我输出total_due” - 那么检查token[0] in keys的目的是什么?应该使用哪些替代标准来确定应该计算Total_Due?
标签: python python-2.7 loops if-statement