簡體   English   中英

如何從文本文件中切出第二列和第三列? 蟒蛇

[英]How to cut 2nd and 3rd column out of a textfile? python

我有一個制表符分隔的文件,其中包含以下行:

foo bar bar <tab>x y z<tab>a foo foo
...

想象一百萬行,每行最多200個單詞。 每個單詞平均5-6個字符。

在第二欄和第三欄,我可以這樣做:

with open('test.txt','r') as infile:
  column23 = [i.split('\t')[1:3] for i in infile]

或者我可以使用unix, 如何在bash的tab delim文件中獲得第二和第三列?

import os
column23 = [i.split('\t') os.popen('cut -f 2-3 test.txt').readlines()]

哪個更快? 還有其他方法可以提取第二列和第三列嗎?

都不使用。 除非證明它太慢,否則請使用csv模塊,該模塊更具可讀性。

import csv
with open('test.txt','r') as infile:
    column23 = [ cols[1:3] for cols in csv.reader(infile, delimiter="\t") ]

如果每行可以有數百個制表符分隔的條目,而您只需要第二個和第三個條目,則無需將它們全部split 您可以使用maxsplit參數來加快速度:

with open('test.txt','r') as infile:
    column23 = [i.split('\t', 3)[1:3] for i in infile]

誰知道,也許聰明的正則表達式會更快:

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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM