python 读取文件并修改保存至新文件

目前有一个读取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()

运行验证
原始数据验证:

img


复杂数据验证:

img

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()


img

img

来看看不导包怎么写


# -*- 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"))



您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632文章:Python讯飞语音转文字保存到文件 中也许有你想要的答案,请看下吧