2015-07-30 3 views
1

Это должно работать нормально. Я не могу понять, почему я получаю этот результат. У меня есть программа, которая открывает текстовый файл.Получение len (a) списка, импортированного из файла в Python 2.7

file2 = open('file.txt','r') 

Текстовый файл содержит 5 строк. Для того, чтобы поместить их в список, я:

data2 = file2.readlines() 

Тогда я могу сделать переменную, содержащую третью строчку, делая так:

var = data2[2] 

Третья строка текстового файла содержит список, с номерами от 1 до 12, каждая из которых является отдельной строкой.

['1','2','3','4','5','6','7','8','9','10','11','12'] 

Наконец, я печатаю длину списка,

print len(var) 

Вместо того, чтобы 12, я получаю 53. Я даже пробовал:

print len(data2[2]) 

Который, видимо, не сделал Работа. Любое объяснение?

+0

Try ' '' расколе (data2 [2]) '(или любой другой разделитель вам нужно) –

+0

Хмм .. кажется, чтобы дать мне 53, до сих пор ... – ZeroFunter

+0

Должен легко разбираться, но вы не указали никаких подробностей. –

ответ

2

data2[2] - это строка в приведенном примере. Он содержит 53 символа. Вам нужно будет преобразовать его в массив с помощью какой-либо манипуляции/разбора строк.

+0

О, я вижу. Это проблема. Я должен был понять это, потому что я беру его из другого списка. Спасибо за ответ. – ZeroFunter

1

Что-то вроде:.

>>> line = "['1','2','3','4','5','6','7','8','9','10','11','12'] " 
>>> len(line) 
53 
>>> line = line.strip() 
>>> line = line.replace('[','') 
>>> line = line.replace(']','') 
>>> line = line.replace("'","") 
>>> line 
'1,2,3,4,5,6,7,8,9,10,11,12' 
>>> nums = [int(s) for s in line.split(',')] 
>>> nums 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] 
>>> len(nums) 
12 
Смежные вопросы