семантическая ошибка python line.split из текстового файла - PullRequest
0 голосов
/ 28 октября 2009

этот раздел кода должен составлять список, содержащий значения второго столбца в текстовом файле, но он принимает вторую букву кто-нибудь знает в чем моя проблема?

TEXTFILE  
opi 60  
kid 60  
pou 60  
ret 60  
kai 60  
bob 100  

for line in lst:                          
    line.split(' ')  
    fire.append(int(line[1]))
    print(line[1])  

Ответы [ 5 ]

1 голос
/ 28 октября 2009

Вы, вероятно, хотите сделать что-то вроде этого:

mylist = []

for line in file:
    firstcolval, secondcolval = line.split()
    mylist.append(int(firstcolval))
1 голос
/ 28 октября 2009

Это также должно работать

import csv
for line in csv.reader(open("datafile"), delimiter=" "):                          
    fire.append(int(line[1]))
    print(line[1])

С другой стороны

from operator import itemgetter
import csv
f=csv.reader(open("datafile"),delimiter=' ')
fire+=[int(x[1]) for x in f]
0 голосов
/ 28 октября 2009

Хорошо, так как split создает новый объект (список, содержащий хотя бы один элемент), вы должны сделать:

for line in lst:
    lc = line.split(' ')
    fire.append(int(lc[1]))
    print lc[1]

Но, как кто-то уже предлагал, вы можете сделать это в одной строке, с пониманием списка:

newlist = [int(current[1]) for current in line.split(" ") for line in lst]

Что читается как: для каждой строки в lst мы разделяем строку пробелом и добавляем элемент с индексом один из разделенной строки (current [1]), преобразованный в int, в наш новый список.

0 голосов
/ 28 октября 2009

Вы можете сделать это с одним простым вкладышем.

fire = [int(b) for a, b in line.split(" ") for line in lst]
0 голосов
/ 28 октября 2009
line.split(' ') 

Ваша ошибка здесь, split не разделяет line, но возвращает разделение строки. Так что вместо этого вам нужно

columns = line.split(' ')

и использовать столбцы вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...