首页 > 技术文章 > txt,csv,json互相转化

love-DanDan 2019-04-04 16:20 原文

也没啥,记下来怕忘了.说明都在代码里面:

麻蛋,这个着色好难看

import csv
import json

#从txt变为csv
student_txt=[];
with open("student.txt",mode='r',encoding='utf-8')as student_txt_file_name:
	for i in student_txt_file_name.readlines():
		student_txt.append(i.strip('\n').split(" "));	#去掉换行符,转为list,使用空格分开(因为txt里面是以空格隔开)
with open("student.csv",mode='w',encoding='ansi',newline='')as student_csv_file_name:	#newline='':作用是防止空行产生;encoding='ansi'创建一个以ASCII编码的csv文件,用utf-8的话我的Excel不认,乱的
	write=csv.writer(student_csv_file_name);	#创建一个编辑对象
	for i in student_txt:
		write.writerow(i);	#把每一个列表(子列表)作为行写入
#我没有主动关闭这两个文件的原因我不说,反正我知道,我自己忘了就让我自己想去.

#从csv变为txt
student_csv=[];
student_txt=[];
with open("student.csv",mode='r',encoding='ansi')as student_csv_file_name:#编码读写一致
	read_object=csv.reader(student_csv_file_name);
	with open("student1.txt",mode='w',encoding='ansi')as student_txt_file_name:
		for i in read_object:
			j=' '.join(i)+'\n';	#这种奇怪的转化方式亮瞎我的眼.还一闪一闪的像迪厅!,
			student_txt_file_name.writelines(j);
#不一定非得是列表,字典也可以
#txt转json
student_json=[];
student_txt=[];
with open('student.txt',mode='r',encoding='utf-8')as student_txt_file_name:
	with open("student.json",mode='w',encoding='ansi')as student_json_file_name:
		for i in student_txt_file_name.readlines():
			student_txt.append(i.strip('\n').split(' '));
		key=student_txt[0];#作为键
		for i in range(1,len(student_txt)):
			student_json_temp=[];
			for j in zip(key,student_txt[i]):		#zip接受多个可迭代对象作为参数,然后将这些对象中的对应位置的元素组成一个个的元组:zip([1,2,3],[4,5,6])返回[(1,4),(2,5),(3,6)]
				k=":".join(j);		#这个的作用就是把(1,4)变成"1:4"
				student_json_temp.append(k);
			student_json.append(student_json_temp);
		json.dump(student_json,student_json_file_name);#这种写方式让我有些郁闷,总觉得像创建对象似的
#json转txt
student_json=[];
student_txt=[];
with open('student_json转txt.txt',mode='w',encoding='ansi')as student_txt_file_name:
	with open("student.json",mode='r',encoding='ansi')as student_json_file_name:
		read_object=json.load(student_json_file_name);
		for i in read_object:
			head_list=[];
			body_list=[];
			for j in i:
				k=j.split(':');
				if len(student_json)==0:
					head_list.append(k[0]);
				body_list.append(k[1]);
			if len(student_json)==0:
				student_txt_file_name.write(' '.join(head_list)+'\n');
				student_json.append(student_json);	#用了一次就没用了
			student_txt_file_name.write(' '.join(body_list)+'\n');

#csv转json
student_csv=[];
student_json=[];
with open("student.csv",mode='r',encoding='ansi')as student_csv_file_name:
	read_object=csv.reader(student_csv_file_name);	#用csv模块自带的函数来完成读写操作
	with open("student_csv转json.json",mode='w',encoding='ansi')as student_json_file_name:
		for i in read_object:
			student_csv.append(i);
		key=student_csv[0];
		for i in range(1,len(student_csv)):
			student_json_temp=[];
			for j in zip(key,student_csv[i]):
				k=":".join(j);
				student_json_temp.append(k);
			student_json.append(student_json_temp);
		json.dump(student_json,student_json_file_name);

#json转csv
student_csv=[];
student_json=[];
with open("student.json",mode='r',encoding='ansi')as student_json_file_name:
	with open("student_json转csv.csv",mode='w',encoding='ansi',newline='')as student_csv_file_name:
		read_object=json.load(student_json_file_name);
		write=csv.writer(student_csv_file_name);
		for i in read_object:	#读出来是列表
			ledlist=[];
			templist=[];
			for a in i:
				j=a.split(':');
				ledlist.append(j[0]);
				templist.append(j[1]);
			if len(student_csv)==0:
				student_csv.append(ledlist);
			student_csv.append(templist);
		for i in student_csv:
			write.writerow(i);

  

推荐阅读