如何将带有.txt扩展名的逗号分隔值读入Python数组?
我是一名生物学家,对Python非常非常陌生,之前学过一点R语言。
我有一个非常大的文本文件(3GB,太大了,R处理不了),里面的所有值都是用逗号分隔的,但文件扩展名是.txt(我不知道这是否重要)。我想做的事情是:
把它读入Python,变成类似R中数据框的对象,
去掉中间的某些列,
减小这个对象的大小,
然后把它写成txt文件。
最后再把剩下的部分拿去R里用。
如果你能帮我,我会非常高兴。谢谢!
5 个回答
2
这样做会占用很少的内存,因为它不会一次性加载整个文件。
import csv
with open('in.txt', 'rb') f_in, open('out.csv', 'wb') as f_out:
reader = csv.reader(f_in)
writer = csv.writer(f_out)
for row in reader:
# keep first two columns and last three columns
writer.writerow(row[:2] + row[-3:])
注意:如果你使用的是Python 3,请将文件模式改为 'r'
(读取)和 'w'
(写入)。
3
其实你不一定要先学Python。你的问题跟这个问题很像。被标记为正确答案的方法是逐行读取大文件,然后创建一个新的、更小的文件。还有一些不错的替代方案,比如使用sqlite
和sqdf
这个包,或者使用ff
这个包。最后一种方法特别适合列数相对行数比较少的情况。