如何使用Python更改文件的字段分隔符?
题
我是R世界的Python新手,我正在处理以数据列结构化的大文本文件(这是激光雷达数据,因此通常有6000万条记录)。
是否有可能更改这样一个大文件的字段分隔符(例如从制表符分隔到逗号分隔),而不必读取文件并执行 for
绕线?
解决方案
非也。.
- 将文件读入
- 更改每行的分隔符
- 写回每一行
这是很容易做到的,只有几行Python(没有测试,但一般的方法工作):
# Python - it's so readable, the code basically just writes itself ;-)
#
with open('infile') as infile:
with open('outfile', 'w') as outfile:
for line in infile:
fields = line.split('\t')
outfile.write(','.join(fields))
我不熟悉R,但如果它有一个库函数,它可能会做同样的事情。
请注意,此代码一次只能从文件中读取一行,因此文件可能大于物理RAM-它从未完全加载。
其他提示
您可以使用 linux tr命令 用任何其他字符替换任何字符。
实际上,让我们说是的,你可以做到没有循环。:
with open('in') as infile:
with open('out', 'w') as outfile:
map(lambda line: outfile.write(','.join(line.split('\n'))), infile)
你不能,但我强烈建议你检查发电机。
要点是,您可以制作更快,结构良好的程序,而无需在内存中写入和存储数据以便处理它。
例如
file = open("bigfile","w")
j = (i.split("\t") for i in file)
s = (","join(i) for i in j)
#and now magic happens
for i in s:
some_other_file.write(i)
此代码只占用一行内存。
不隶属于 StackOverflow