Python 中如何对 CSV 文件行内指定数据进行排序并写入?
题目描述
读取 西北地区省级行政区人口.csv
文件的内容,按照人口进行排序,并且写入 西北地区省级行政区人口(按照人口排序).csv
文件中。(不使用第三方库)
西北地区省级行政区人口.csv
文件为:
陕西,3954甘肃,2490
青海,594
宁夏,725
新疆,2589
西北地区省级行政区人口(按照人口排序).csv
文件内容为:
青海,594宁夏,725
甘肃,2490
新疆,2589
陕西,3954
题目来源及自己的思路
使用 with open 打开并写入,并使用 sort 排序
相关代码
def workless2(): with open("西北地区省级行政区人口.csv", mode='r', encoding='u8') as f:
data1 = []
for line in f:
data1.append(line)
data1.sort()
with open("西北地区省级行政区人口.csv", mode='w', encoding='u8') as f:
for x in data1:
f.write(f"{str(x)}")
你期待的结果是什么?实际看到的错误信息又是什么?
期待结果
青海,594宁夏,725
甘肃,2490
新疆,2589
陕西,3954
实际结果
回答:
分步进行,先读取文件,然后再排序
python">sorted_list = []with open("西北地区省级行政区人口.csv", mode='r', encoding='u8') as f:
sorted_list = sorted([_.replace('\n', '') for _ in f.readlines()], key=lambda row: int(row.split(',')[-1]))
print(sorted_list)
['青海,594', '宁夏,725', '甘肃,2490', '新疆,2589', '陕西,3954']
你代码逻辑写的有点问题。
def workless2(): data1 = [] # ①
with open("西北地区省级行政区人口.csv", mode='r', encoding='u8') as f:
# ① 这个data1在下文要使用,你要放到with 外面吧
# data1 = []
for line in f:
# 可能有\n换行
# data1.append(line)
data1.append(line.replace('\n', '')) # 移除换行
# ② 你这样每加一行都进行排序,无意义
# data1.sort()
# data1.sort() # ② 这样排序是按整行排序,达不到你的目的
# ③ 这样才可以。指定用哪个key排序 # FIXME: 这块要注意int()可能会抛出异常
data1.sort(key=lambda row: int(row.split(',')[-1]))
with open("西北地区省级行政区人口.csv", mode='w', encoding='u8') as f:
# for x in data1:
# f.write(f"{str(x)}")
# 数据不是很大的话,直接写入就行
f.write('\n'.join(data1))
以上是 Python 中如何对 CSV 文件行内指定数据进行排序并写入? 的全部内容, 来源链接: utcz.com/p/938690.html