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 中如何对 CSV 文件行内指定数据进行排序并写入?


回答:

分步进行,先读取文件,然后再排序

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

回到顶部