使用for循环从文本文件中删除制表符分隔的空格
在我的Python课上,我正在处理一个.tsv文件,想要提取15行数据,这些数据分成4列,然后把每一行的数据变成列表。为了做到这一点,我需要去掉每列之间的制表符。
有人建议我使用一个循环,逐行处理。这听起来不错,但我就是不知道怎么去掉那些制表符。
谁能帮帮我?
4 个回答
3
你应该使用Python自带的csv模块,特别是csv.reader这个函数。
rows = [row for row in csv.reader(open('yourfile.tsv', 'rb'), delimiter='\t')]
这个模块还有一个叫做dialect
的参数,可以设置为excel-tab,这样就能符合微软Excel的制表符分隔格式。
4
其实,正确的方法是使用Python的CSV模块(在其他回答中提到过),因为它可以处理转义的分隔符、带引号的值等等。
从更广泛的角度来看,这可以通过列表推导式来实现:
rows = [line.split('\t') for line in file]
而且,正如评论中提到的,在某些情况下,使用生成器表达式会是更好的选择:
rows = (line.split('\t') for line in file)
有关何时使用这两者的讨论,可以参考生成器表达式与列表推导式。
4
要从一个文件中读取每一行,并根据制表符(Tab)来分割每一行,你可以这样做:
rows = []
for line in open('file.tsv', 'rb'):
rows.append(line.strip().split('\t'))