第一部分:考点和作答区
考点:
- 文件读写
- 数据解析(如:CSV格式)
- 字典操作
- 列表推导式
题目描述: 编写一个Python函数 process_csv_data
,该函数读取一个名为 data.csv
的CSV文件,该文件包含以下列:date
(日期),sales
(销售额)。函数应该计算每天的销售额总和,并将结果保存到一个新的CSV文件 daily_sales_sum.csv
中。
例如,data.csv
文件内容如下:
date,sales
2023-01-01,1000
2023-01-02,1200
2023-01-03,1500
生成的 daily_sales_sum.csv
文件内容应如下:
date,total_sales
2023-01-01,1000
2023-01-02,1200
2023-01-03,1500
作答区:
# 请在此处编写你的代码
第二部分:答案
import csv
def process_csv_data(input_filename, output_filename):
sales_data = {}
with open(input_filename, mode='r', newline='') as file:
reader = csv.DictReader(file)
for row in reader:
date = row['date']
sales = int(row['sales'])
if date not in sales_data:
sales_data[date] = 0
sales_data[date] += sales
with open(output_filename, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['date', 'total_sales'])
for date, total_sales in sales_data.items():
writer.writerow([date, total_sales])
# 测试代码
process_csv_data('data.csv', 'daily_sales_sum.csv')
扩展考点和扩展作答区
扩展考点:
- 文件读写(如:JSON格式)
- 数据解析(如:JSON格式)
- 字典操作
- 列表推导式
扩展题目描述: 扩展 process_csv_data
函数,使其能够处理JSON格式的文件。JSON文件包含相同的字段,但格式不同。
作答区:
# 请在此处编写你的代码
扩展的解答思路和答案
import json
def process_json_data(input_filename, output_filename):
sales_data = {}
with open(input_filename, mode='r') as file:
data = json.load(file)
for item in data:
date = item['date']
sales = int(item['sales'])
if date not in sales_data:
sales_data[date] = 0
sales_data[date] += sales
with open(output_filename, mode='w') as file:
writer = csv.writer(file)
writer.writerow(['date', 'total_sales'])
for date, total_sales in sales_data.items():
writer.writerow([date, total_sales])
# 测试代码
www.hzhyrcw.com
www.hzhdrcw.com
www.hzlmrcw.com
www.jmjhrcw.com
www.jmxhrcw.com
process_json_data('data.json', 'daily_sales_sum.csv')
在这个扩展的答案中,我们修改了 process_csv_data
函数,使其能够处理JSON格式的文件。我们使用 json.load()
函数来读取JSON文件,并将其内容转换为列表,然后遍历列表中的每个项目,进行与CSV文件相同的处理。最后,我们将处理后的数据写入CSV文件。