python的csv包可以读取csv格式的文件,大家应该都知道~
但最近自己有个需求,需要读取tsv文件,为此百度了下,发现网上并没有用python基础包直接读入tsv文件的方法,但是可以安装Pandas模块用来读取tsv格式文件。但是csv与tsv在本质上并没有区别,为嘛为了tsv要安装个Pandas包,强迫症受不了~
csv与tsv区别
tsv和csv都是以纯文本文件存储的电子表格格式,两者都可以用文本编辑器、Sublime等程序打开,同时他们又是电子表格形式,可以用Excel等电子表格程序打开。tsv和csv被广泛用于计算机存储简单的电子表格数据(貌似csv用的更频繁些~但是有些老外喜欢用tsv格式……嗯……坑货!)
TSV:tab separated values;即“制表符分隔值”,用制表符分隔数据,数据样例如下:
name,agename age
张三 20
李四 30
CSV: comma separated values;即“逗号分隔值”,用逗号分隔数据,数据样例如下:
张三,20
李四,30
可以看到,他们的唯一区别只是分隔符不一样,tsv格式是用‘\t’分隔,而csv格式是用‘,’分隔。
既然他们的差别不大,那么能否用csv包来处理tsv格式文件呢?能~
用csv包读入tsv文件
默认的csv只能处理以逗号为分隔符的文件,为了让csv包能处理tsv文件,本质上是让其能处理以制表符(\t)为分隔符的文件。
第一步:修改csv包的解析文件模式
import csv
csv.register_dialect('mydialect',delimiter='\t',quoting=csv.QUOTE_ALL)
csv中register_dialect()方法是创建自己的解析模式,第一个参数是模式名称(自己取名),第二个参数用于配置分隔符(这里我们把分隔符改成制表符,这样便可以解析tsv格式)
第二步:用自己的解析模式读入tsv文件
with open('myFile.tsv',) as csvfile:
file_list = csv.reader(csvfile,'mydialect')
for line in file_list:
print line
通过csv中的reader()方法解析tsv文件便可,第一个参数是要解析的文件,第二个参数是要使用的解析模式(这里用刚刚配置好的mydialect解析文件)
第三步:注销自己的解析模式
csv.unregister_dialect(mydialect)
通过unregister_dialect()方法可以注销掉自己配置的解析模式