【发布时间】:2019-11-20 14:38:33
【问题描述】:
所以基本上我想迭代具有这种格式的文本文件的行:
-----------------------------------------
Code: 0123456789
EGGS: 3 7.00 21.00
BACON: 1 3.50 3.50
COFFEE: 2 14.20 28.40
TOTAL: 52.90
-----------------------------------------
我有以下代码来逐行阅读:
with open(filename, "rt", encoding="utf-8") as f:
for line in f:
prevline = line
line.split()
if '-' in line:
temp = f.readline().split(':') #Get Code
print(temp)
AFM = temp[1]
print(AFM)
else:
tempProducts = line.split(':') #Get Product in a list
productName = tempProducts[0] #Store Product Name in a variable
productStats = tempProducts[1] #Store Product Stats in a list
productStats = productStats.split(" ")
for value in productStats:
valueArray.append(float(value))
products.update({productName:valueArray})
if '-' in f.readline():
rec = Receipt(AFM,products)
products={}
valueArray=[]
receipts.append(rec)
else:
line=prevline
请注意,我想跳过带有 '------------' 字符的代码行,但它会继续读取第二行,然后是第四行,然后是第六行(代码、培根、总计)。问题是我该如何解决这个问题。编辑:文件中有多个收据,所以我每次都需要跳过带有'---------'的行。
【问题讨论】:
-
预期的输出是什么,我不太清楚。
Receipt是什么? -
预期的输出是我有一个(例如培根) valueArray=['1','3.50','3.50'] 和一个 products{Bacon:valueArray} Bacon=key and valueArray=value在字典中,对除 Code 行之外的所有行执行此操作。并使用该信息创建一个对象并将其放入列表中
-
AFM是否总是跟随Code:? -
是的,AFM 始终存储代码
标签: python python-3.x file