others - list - 在python中,如何从文本文件读取特定列

我有一个文本文件,内容是包含数字的表:

510 6

620 1

730 4

840 3

923 1

413 6

如何提取第二列到一个列表中?

时间: 作者:


f=open(file,"r")


lines=f.readlines()


result=[]


for x in lines:


 result.append(x.split(' ')[1])


f.close()



你可以使用列表推导做同样的事


print [x.split(' ')[1] for x in open(file).readlines()]



split()上的文档

string.split(s[, sep[, maxsplit]])

作者:

这是一个由空格分隔的文件,因此使用读取带分隔符值文件的模块csv。


import csv



with open('path/to/file.txt') as inf:


 reader = csv.reader(inf, delimiter="")


 second_col = list(zip(*reader))[1]


 # In Python2, you can omit the `list(...)` cast



zip(*iterable)模式可用于将行转换为列,反之亦然,


>>> testdata = [[1, 2, 3],


 [4, 5, 6],


 [7, 8, 9]]



>>> for line in testdata:


... print(line)



[1, 2, 3]


[4, 5, 6]


[7, 8, 9]



但是,需要列,可以将每一行传递给zip函数


>>> testdata_columns = zip(*testdata)


# this is equivalent to zip([1,2,3], [4,5,6], [7,8,9])



>>> for line in testdata_columns:


... print(line)



[1, 4, 7]


[2, 5, 8]


[3, 6, 9]



作者:


>>> import numpy as np


>>> np.loadtxt("myfile.txt")[:, 1]


array([10., 20., 30., 40., 23., 13.])



作者:

可以将zip函数与列表推导一起使用:


with open('ex.txt') as f:


 print zip(*[line.split() for line in f])[1]



结果:


('10', '20', '30', '40', '23', '13')



作者:

首先打开文件,然后应用.read()方法读取文件内容['5', '10', '6', '6', '20', '1', '7', '30', '4', '8', '40', '3', '9', '23', '1', '4', '13', '6']在这个列表上应用列表切片,从索引位置为1的元素开始,跳过接下来的3个元素,直到它到达循环的末尾。


with open("sample.txt","r") as datafile:


 print datafile.read().split()[1::3]



输出:


['10', '20', '30', '40', '23', '13']



作者:


import csv


with open('csv_file','r') as f:


 # Printing Specific Part of CSV_file


 # Printing last line of second column


 lines = list(csv.reader(f, delimiter = ' ', skipinitialspace = True))


 print(lines[-1][1])


 # For printing a range of rows except 10 last rows of second column


 for i in range(len(lines)-10):


 print(lines[i][1])



作者:
...