我创建了一个商店程序,可以在用户选择产品时保存产品名称和价格,然后附加到文件中。现在我正在尝试从该文件创建一个类似于购物车的购物车。我遇到的困难是如何总结该文件中的所有价格。
我的文件包含:
You have purchased 5 banana of Rs. 500
You have purchased 2 banana of Rs. 200
You have purchased 1 banana of Rs. 100
卢比。是我的货币,[500,200,100]是价格。我如何从文件中读取它然后总结并打印。
我尝试过使用拆分功能
split(Rs.)
使用此功能:
for line in f.readlines():
uselessdata,price = line.split("Rs.")
lst.append([uselessdata, int(price)])
但它会出错:ValueError: not enough values to unpack (expected 2, got 1)
答案 0 :(得分:1)
您的实际样本输入不会产生此错误。
但生成一个文件非常容易:例如,只需在文件末尾添加一个空行即可。如果那是您真实数据的样子,那就会发生这种情况:
>>> line = '\n'
>>> uselessdata,price = line.split("Rs.")
ValueError: not enough values to unpack (expected 2, got 1)
原因应该是显而易见的,但如果不是:
>>> line.split("Rs.")
['\n']
因此,您需要决定如何处理此类案件。一种可能性是跳过所有错误 - 或者记录它们:
for line in f.readlines():
try:
uselessdata,price = line.split("Rs.")
lst.append([uselessdata, int(price)])
except ValueError as e:
logging.info(f'{line} failed to split or parse')
另一个是处理你期望的特定情况:
for line in f.readlines():
if line.strip():
uselessdata,price = line.split("Rs.")
lst.append([uselessdata, int(price)])
另一种方法是编辑文件以删除不正确的行。
但是你不能在这些文件之间做出选择,直到你真正查看文件并查看你在调试器中运行或运行的错误,或者添加一些打印语句,这样你才能看到特定的行'失败 - 并决定你想对他们做些什么。