目前有一个读取csv文件转为dictionary的函数 di_buil("bala.csv") (csv文件中有四列分别为名字,电话,颜色以及邮箱)
例: di_buil("bala.csv")
output为{'名字1':{'电话':'电话1','邮箱':'邮箱1'},'名字2':{'电话':'电话2','邮箱':'邮箱2'}}
问题:如何使用上述函数,创建一个新函数,该函数修改原csv文件存入新的csv文件
例:去除颜色列,并且更改剩下三列的顺序,名字按字母顺序排序
原csv文件格式:
name,phone,color,email
name1,phone1,color1,email1
name2,phone2,color2,email2
修改后新csv文件
phone,name,email
phone1,name1,email1
phone2,name2,email2
(不能使用import)
下有代码,可直接复制使用。如有帮助,敬请采纳,你的采纳是我前进的动力,O(∩_∩)O谢谢!!!!!!!!****
要求:
1、不能使用import
2、原csv文件格式:
name,phone,color,email
name1,phone1,color1,email1
name2,phone2,color2,email2
2、修改后新csv文件
phone,name,email
phone1,name1,email1
phone2,name2,email2
实现代码如下
csv_lines = open('bala.csv', 'r', encoding='utf-8').readlines()
csv_write = open('csv_write.csv', 'w+', encoding='utf-8')
out_dict = {}
csv_write.write('phone,name,email' + '\r\n')
for line in csv_lines:
line = line.strip()
if True in list(map(lambda x: x in line.split(','), ['name', 'phone', 'color', 'email'])) or line == '':
continue
line_list = line.split(',')
# name,phone,color,email
out_dict[line_list[0]] = {'phone': line_list[1], 'email': line_list[3]}
# phone,name,email
csv_write.write(f'{line_list[1]},{line_list[0]},{line_list[3]}' + '\r\n')
csv_write.close()
运行验证
原始数据验证:
import pandas as pd
def di_buil(fileName="bala.csv", toFilename="bala1.csv"):
df = pd.read_csv(fileName, sep=',', encoding="utf_8_sig")
# 获取列名,去除颜色列,并且更改剩下三列的顺序,名字按字母顺序排序
colsList = list(df.columns)
colsList.remove('color')
colsList.sort(reverse=True)
df1 = df[colsList]
print(df1)
df1.to_csv(toFilename, header=colsList, sep=',', index=False, encoding="utf_8_sig")
if __name__ == '__main__':
di_buil()
来看看不导包怎么写
# -*- coding: utf-8 -*-
old_csv_file = "old.csv"
new_csv_file = "new.csv"
old_list = []
count = 0
col_list = None
for line in open(old_csv_file, "rb"):
line_str = line.decode("utf8").strip()
if count == 0:
col_list = line_str.split(",")
else:
data_list = line_str.split(",")
one_dict = dict(zip(col_list, data_list))
del one_dict["color"]
old_list.append(one_dict)
count += 1
new_list = sorted(old_list, key=lambda a: a["name"])
write_file_list = []
for i, data in enumerate(new_list):
if i == 0:
keys = list(data.keys())
write_file_list.append(",".join(keys))
values = list(data.values())
write_file_list.append(",".join(values))
with open(new_csv_file, "ab") as f:
f.write("\n".join(write_file_list).encode("utf8"))
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!