我是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)

此代码只占用一行内存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top