使用意外的换行符读取Pandas中的制表符分隔文件

时间:2016-06-13 19:38:54

标签: python pandas

我试图阅读此处找到的文件的未压缩版本: http://ftp.ncbi.nlm.nih.gov/pub/clinvar/tab_delimited/variant_summary.txt.gz

我使用Pandas和read_table函数;但是,有些行包含文本OMIM:在选项卡之前,它似乎导致意外的换行符。在OMIM之后包含字符串的行:似乎没有这个问题。

我认为:导致它以某种方式起作用,但不确定如何解决它以正确读取行的其余部分。它还搞砸了导入到Excel,所以我对它的文字很有信心。

使用Python3和最新版本的Pandas。

1 个答案:

答案 0 :(得分:2)

您的CSV文件包含NULL字节(即b'\x00')。虽然文件有点大(100 + MB),但它(可能)小到可以完全读入内存。因此,快速解决方法是使用以下命令删除NULL字节:

with open('variant_summary.txt', 'rb') as f, open('variant_summary-fixed.txt', 'wb') as g:
    content = f.read()
    content = content.replace(b'\x00', b'')
    g.write(content)

(如果文件太大而不适合内存,则必须阅读 并将文件写成块 - 不是非常困难,而是更多的代码。)

一旦你拥有数据文件的固定版本,variant_summary-fixed.txt,你就可以了 像往常一样将它加载到pandas中:

df = pd.read_table('variant_summary-fixed.txt', delimiter='\t')