python - 如何将列表中的数据写入 CSV 文件?
问题描述
我得到了一个原始的 csv 文件,并负责读取它,添加一个新的平均值列,然后将更新的数据写回另一个 csv 文件。
直到从列表中写入数据为止,一切都已成功。
"""Student Do: Sales Analysis.
This script will use the Pathlib library to set the file path,
use the csv library to read in the file, and iterate over each
row of the file to calculate customer sales averages.
"""
# @TODO: Import the pathlib and csv library
from pathlib import Path
import csv
# @TODO: Set the file path
csv_path = Path("Resources/sales.csv")
# Initialize list of records
records = []
# @TODO: Open the csv file as an object
with open (csv_path, 'r') as csv_file:
# @TODO:
# Pass in the csv file to the csv.reader() function
# (with ',' as the delmiter/separator) and return the csvreader object
csv_reader = csv.reader(csv_file, delimiter=',')
# @TODO: Read the header row
header = next(csv_reader)
# @TODO: Print the header
# @TODO: Append the column 'Average' to the header
header.append('Average')
print (header)
# @TODO: Append the header to the list of records
records.append(header)
# @TODO: Read each row of data after the header
for row in csv_reader:
# @TODO: Print the row
#print(row)
# @TODO:
# Set the 'name', 'count', 'revenue' variables for better
# readability, convert strings to ints for numerical calculations
name = row[0]
count = int(row[1])
revenue = int(row[2])
records.append(name)
records.append(count)
records.append(revenue)
# @TODO: Calculate the average (round to the nearest 2 decimal places)
average = round(revenue/count, 2)
# @TODO: Append the average to the row
row.append(average)
# @TODO: Append the row to the list of records
records.append(row[3])
print (row)
# @TODO: Set the path for the output.csv
csv_output_path = Path("output.csv")
# @TODO:
# Open the output path as a file and pass into the 'csv.writer()' function
# Set the delimiter/separater as a ','
with open (csv_output_path, 'w') as file:
csv_writer = csv.writer(file, delimiter=',')
# @TODO:
# Loop through the list of records and write every record to the
# output csv file
csv_writer.writerow(header)
for row in records:
csv_writer.writerow(records)
for data in records:
print (data)
输出文件全部错误,标题在名称部分,名称在计数部分,计数在收入中,其他一切都在平均部分
解决方案
用 csv_writer.writerow(row) 替换 csv_writer.writerow(records)
推荐阅读
- javascript - 来自 AJAX 的随机空请求响应导致 JSON 解析器错误
- bash - 脚本中的整数预期错误
- android - 在 React Native 中保持两个文本值垂直对齐
- python - Reshape Tensor using TF Learn Error: setting an array element with a sequence
- swift - Firebase 显示来自数据库的不同评论
- oracle-cloud-infrastructure - 带有 InstanceSourceDetails 接口的 LaunchInstance 示例
- php - 错误:单元测试时无法实例化接口 symfony
- javascript - 如何将我从下拉列表中选择的数据附加到 yii2 中的下一个输入字段
- java - 如何以原子方式替换单例映射的所有值?
- javascript - 使用 Redux 向 React 组件发送 Socket.io API 响应