Чтение раздела строки в файле в Python 2.7 - PullRequest
0 голосов
/ 05 марта 2019

Я использую Python 2.7, потому что это то, что мой профессор заставляет нас использовать.

Я анализирую данные флага, и каждая строка содержит 30 атрибутов о каждом флаге.

Меня интересуют только 1-й и 11-й-17-й атрибуты, но я не уверен, как их читать и хранить без других, которые меня не интересуют.

Я также довольно плохо знаком с 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 голосов
/ 05 марта 2019

Исходя из ваших ответов, я бы предложил что-то вроде этого:

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 будет содержать ожидаемые вами данные.

0 голосов
/ 05 марта 2019

Если вы можете использовать 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')
0 голосов
/ 05 марта 2019

Почему бы не попробовать:

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
...