在python 2.7中读取文件中一行的一部分

时间:2019-03-04 21:06:34

标签: python python-2.7 file data-analysis

我正在使用python 2.7,因为那是我的教授正在使用的。

我正在分析标志数据,每行包含有关每个标志的30个属性。

我只关心1st和11th-17th属性,但是不确定如何读取这些属性并将其存储,而没有其他我不关心的属性。

我也是python的新手,所以这可能是一个简单的任务,我只是没有意识到,因此,如果有任何建议可以帮助,我真的很感激。

def getColors():
    f = open('flag.data.txt')

文件中一行的示例:

Afghanistan,5,1,648,16,10,2,0,3,5,1,1,0,1,1,1,0,green,0,0,0,0,1,0,0,1,0,0,black,green

3 个答案:

答案 0 :(得分:1)

为什么不尝试:

def getColors():
    arr=[]
    f = open('flag.data.txt','r')
    for line in f: 
        line_arr = line.split(',')
        arr.append([line_arr[0]] + [line_arr[i] for i in range(10, 17)])
    return arr

答案 1 :(得分:1)

根据您的回答,我会提出这样的建议:

from __future__ import with_statement

attributes = []
with open('flag.data.txt','r') as f:
    for line in f: 
        data = line.strip().split(',')
        attributes.append([data[0]] + data[10:17])

最后,attributes数组将具有您期望的清除数据。

答案 2 :(得分:0)

如果您可以使用numpy,则np.loadtxt可以解决以下问题:

import numpy as np 
from StringIO import StringIO

data = """Afghanistan,5,1,648,16,10,2,0,3,5,1,1,0,1,1,1,0,green,0,0,0,0,1,0,0,1,0,0,black,green"""

result =  np.loadtxt(StringIO(data),dtype=str,delimiter=',',usecols=(0,10,11,12,13,14,15,16))

返回:

array(['Afghanistan', '1', '1', '0', '1', '1', '1', '0'], dtype='|S11')