使用文本文件中的值创建表时遇到一些问题。我的文本文件如下所示:
e432,6/5/3,6962,c8429,A,4324
e340,2/3/5,566623,c1210,A,3201
e4202,6/5/3,4232,c8419,E,4232
e3230,2/3/5,66632,c1120,A,53204
e4202,6/5/3,61962,c8429,A,4322
我想生成一个包含数组的表,其中:最后一列(amountpaid)值小于第三列(final total),如果第五列(status)等于“a”。未付总额是减去最终总额和已付金额后得出的。你知道吗
生成表的代码是:
data = open("pJoptionc.txt", "r")
info=data.readlines()
data.close
for li in info:
status=li.split(",")[4]
finaltotal=int(li.split(",")[2])
amountpaid=int(li.split(",")[5])
totalrev=0
headers = ["Estimate Number", "Date", "Final Total", "Customer Number", "Status", "Amount Paid", "Outstanding Amount"]
print(" ".join(headers))
for line in open("pJoptionc.txt", "r"):
line = line.strip().split(",")
line.append(str(int(line[2]) - int(line[5])))
if line[2] == line[5] or line[4] in ("E"):
continue
for i, word in enumerate(line):
print(word.ljust(len(headers[i - (i > 4)])), end=" " * ((i - (i > 4)) != len(headers) - 1))
print()
outstandingrev =(finaltotal) - (amountpaid)
totalrev += int(outstandingrev)
print("The total amount of outstanding revenue is...")
print("£",totalrev)
我想要的输出是
Estimate Number Date Final Total Customer Number Status Amount Paid Outstanding Amount
e432 6/5/3 6962 c8429 A 4324 2638
e340 2/3/5 566623 c1210 A 3201 563422
e3230 2/3/5 66632 c1120 A 53204 13428
e4202 6/5/3 61962 c8429 A 4322 57640
The total amount of outstanding revenue is...
£ 13428
但是,当我运行代码时,输出是反复重复的表,并且负值出现在“未付金额”列中。我使用的是python3.4.3。你知道吗
该表一遍又一遍地重复,因为您读取了脚本顶部的文件,然后对文件中的每一行重新打开该文件。你知道吗
下面是一种使用
namedtuple
的方法:参考文献:
在循环中再次读取该文件,以便它对表中的每一行都重复。尝试这样做: (注意这次文件行上只有1
for
个循环)**旁注:您可能想查看
csv
模块: https://docs.python.org/3/library/csv.html相关问题 更多 >
编程相关推荐