gpt4 book ai didi

python - 如何将管道分隔的文本文件转换为 CSV?

转载 作者:太空宇宙 更新时间:2023-11-04 07:18:42 25 4
gpt4 key购买 nike

我有一个大文本文件,我想使用 Python 将其转换为 CSV。我的数据如下:

var1|var2|var3|tonumber|fromnumber|var|coding|udh|var|circle|var|var|var|var15

898980d1-6e5b-40f2-a313-c30f08bf0fe6|49A5919EB0D04EDE9B6CEB5AF932EAA3|sbs1|919899980898|HITECH|1|1|0|VODAFONE|Delhi|2015-02-21 12:08:51|5|3|RBA/6724R # Kailash Ram Panwar (PL) # Rz-410/13 Flat No-09 Iiird Floor Tkd Extn Delhi - 110019-110019 # Tgt Skt # #

如何将此文件转换为 CSV?我试过:

In [1]: import csv

In [2]: import pandas as pd

In [3]: piperows = []

f = open("/home/suri/ValueFirst/MT.txt", "rb")

In [6]: readerpipe = csv.reader(f, delimiter = '|')

In [7]: for row in readerpipe:
...: piperows.append(row)
...: f.close()
...:

我得到了以下错误:

----------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-842b0d42f436> in <module>()
----> 1 for row in readerpipe:
2 piperows.append(row)
3 f.close()
4

ValueError: I/O operation on closed file

最佳答案

就像@Martijn Pieters 建议的那样,您不应该以这种方式缩进f.close(),因为它现在是循环的一部分。我建议使用 with block ,它将负责自动关闭文件。

import csv

with open("/home/suri/ValueFirst/MT.txt", "rb") as f:
readerpipe = csv.reader(f, delimiter='|')
piperows = list(readerpipe)

这里的一件事是我们构建了一个包含所有行的大列表,如果您正在转换文件,这可能不是一个好主意。您可能会在阅读管道分隔版本时编写新的逗号分隔版本。

import csv

with open("/home/suri/ValueFirst/MT.txt", "rb") as file_pipe:
reader_pipe = csv.reader(file_pipe, delimiter='|')
with open("/home/suri/ValueFirst/MT.csv", 'wb') as file_comma:
writer_comma = csv.writer(file_comma, delimiter=',')
for row in reader_pipe:
writer_comma.writerow(row)

编辑: @Martijn 建议将读者直接传递给作者的 writerows 方法...如果 writerows 方法被正确实现它会产生同样的效果并且避免一次加载内存中的所有行。

import csv

with open("/home/suri/ValueFirst/MT.txt", "rb") as file_pipe:
reader_pipe = csv.reader(file_pipe, delimiter='|')
with open("/home/suri/ValueFirst/MT.csv", 'wb') as file_comma:
writer_comma = csv.writer(file_comma, delimiter=',')
writer_comma.writerows(reader_pipe)

编辑 2:代码变得非常简单,您可以内联 reader 和 writer 变量并获得以下内容,如果您愿意...

import csv

with open("/home/suri/ValueFirst/MT.txt", "rb") as file_pipe:
with open("/home/suri/ValueFirst/MT.csv", 'wb') as file_comma:
csv.writer(file_comma, delimiter=',').writerows(csv.reader(file_pipe, delimiter='|'))

关于python - 如何将管道分隔的文本文件转换为 CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29212955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com