在Python中读取文本文件并从中选择类别?H

2024-09-29 21:35:02 发布

您现在位置:Python中文网/ 问答频道 /正文

酒店销售人员在文本文件中输入销售额。每一行包含以下内容,用分号分隔:客户的名称、销售的服务(如晚餐、会议、住宿等)、销售金额和活动日期。编写一个程序来读取这样的文件并显示每个服务类别的总金额。如果

我的文本文件包含

Bob;Dinner;10.00;January 1, 2015
Tom;Dinner;14.00;January 2, 2015
Anne;Lodging;125.00;January 3, 2015
Jerry;Lodging;125.00;January 4, 2015

这是我目前为止的代码

^{pr2}$

我得到一个语法错误,不知道为什么。在

以及回溯:

Traceback (most recent call last): 
File "C:\Users\Brandon\Desktop\Assignment 7\girrrr.py", 
line 24, in <module> main() File "C:\Users\Brandon\Desktop\Assignment 7\girrrr.py", 
line 7, in main print ('{0}: $ {1}').format(key, amount_by_category.get(key) ) 
AttributeError: 'NoneType' object has no attribute 'format'

Tags: inpyformatmainlineusersfile文本文件
2条回答

您共享的回溯如下所示:

print ('{0}: $ {1}').format(key, amount_by_category.get(key) )

虽然您的代码是这样的:

^{pr2}$

我试着运行你的代码,运行良好。尝试重新运行代码,它应该可以工作。在

看起来您使用的是一个旧的python,但这段代码在3.6中运行得很好:

def main():
    file_name = input("Input file name: ")
    amount_by_category = process_file(file_name)
    if amount_by_category:
        print ("Totals:")
        for key in amount_by_category:
            print ("{}: $ {}".format(key, amount_by_category.get(key)))

def process_file(file_name):
    infile = open(file_name, 'r')
    # a dictionary mapping category to total amount for that category
    amount_by_category = {}
    for line in infile:
        fields = line.split(';')
        if len(fields) != 4:
            raise Exception('Expected 4 fields but found %s' % len(fields))
        value = float(fields[2])
        category = fields[1]
        if not category in amount_by_category:
            amount_by_category[category] = 0.0
        amount_by_category[category] += value
    return amount_by_category

main()

相关问题 更多 >

    热门问题