假设我想使用Python将文本文件(in.txt)转换为csv文件(out.csv)
in.txt:
ID: 1
Name: Jon Doe
Address: 123 Main St Anytown, USA
Age: 25
输出文件out.csv应如下所示:
"ID","Name","Address","Age"
"1","Jon Doe","123 Main St Anytown, USA","25"
到目前为止,我已经做到了:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import csv
f = open("in.txt")
x = f.readlines()
s = []
for i in x:
i = i.replace(":",'"')
j = i.replace(" ","'")
csvex = csv.writer(open("out.csv","w"), quoting=csv.QUOTE_ALL)
csvex.writerow(s)
我该怎么做
我的解决办法是:
具体而言:
[x.strip().split(“:”,1)for x in f]将创建一个包含两个元素的列表,将传递的行x拆分为“:”,只强制进行一次拆分(例如,“a:1:2”。如果只进行第一次拆分,拆分(“:”,1)仍将给出一个二维列表[“a”,“1:2]”)
使用*操作符解包,然后压缩,这是用于转换多维列表的一个很好的技巧。要明确的是:
l=[['a',b',c',['d',e',f']
列表(zip(*l))将返回[('a','d'),('b','e'),('c','f')]
print语句的最后一个循环只负责以所需格式输出所获得的zip对象
允许单个或多个记录的解决方案:
一些解释:
while True
循环永远循环,直到有一个break
语句从中跳出next(in_f)
试图读取文件结尾以外的内容时,try .. except StopIteration
会捕获rec
被创建为一个字典,它在您需要进一步操作值或希望在其他地方使用记录时非常方便,尽管严格来说,这不是执行任务的最有效方式李>您可以使用正则表达式:
这将产生
现在,您可以使用
;
将它们连接起来,或者使用它执行任何其他操作。请参阅表达式on regex101.com的演示相关问题 更多 >
编程相关推荐