首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从文本文件中删除第二和第三列?python

如何从文本文件中删除第二和第三列?python
EN

Stack Overflow用户
提问于 2014-04-22 14:21:04
回答 2查看 2K关注 0票数 0

我有一个由制表符分隔的文件,文件的行如下:

代码语言:javascript
复制
foo bar bar <tab>x y z<tab>a foo foo
...

想象一下1,000,000行,每行最多200字。每个单词平均有5-6个字符.

在第二和第三栏,我可以这样做:

代码语言:javascript
复制
with open('test.txt','r') as infile:
  column23 = [i.split('\t')[1:3] for i in infile]

或者我可以使用unix,How can i get 2nd and third column in tab delim file in bash?

代码语言:javascript
复制
import os
column23 = [i.split('\t') os.popen('cut -f 2-3 test.txt').readlines()]

哪个更快?还有其他方法提取第二和第三列吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-22 14:45:46

两样都不用。除非证明它太慢,否则使用csv模块,它的可读性要高得多。

代码语言:javascript
复制
import csv
with open('test.txt','r') as infile:
    column23 = [ cols[1:3] for cols in csv.reader(infile, delimiter="\t") ]
票数 3
EN

Stack Overflow用户

发布于 2014-04-22 14:25:43

如果每行可以有数百个以制表符分隔的条目,并且只需要第二个和第三个条目,那么就不需要将它们全部split;有一个可以使用的maxsplit参数,可以加快速度:

代码语言:javascript
复制
with open('test.txt','r') as infile:
    column23 = [i.split('\t', 3)[1:3] for i in infile]

谁知道呢,也许聪明的裁判会更快些:

代码语言:javascript
复制
import re
regex = re.compile("^[^\t\n]*\t([^\t\n]*)\t([^\t\n]*)", re.MULTILINE)
with open('test.txt','r') as infile:
    columns23 = regex.findall(infile.read())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23222267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档