总结文件中的价格,然后打印并附加总价值

时间:2018-05-05 22:36:12

标签: python

我创建了一个商店程序,可以在用户选择产品时保存产品名称和价格,然后附加到文件中。现在我正在尝试从该文件创建一个类似于购物车的购物车。我遇到的困难是如何总结该文件中的所有价格。

我的文件包含:

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)

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)])

另一种方法是编辑文件以删除不正确的行。

但是你不能在这些文件之间做出选择,直到你真正查看文件并查看你在调试器中运行或运行的错误,或者添加一些打印语句,这样你才能看到特定的行'失败 - 并决定你想对他们做些什么。