2013-12-26 2 views
0

Основано на this Я экспериментирую с imap и gmail с помощью python.Является ли это списком или строкой в ​​Python?

с помощью питона REPL, у меня есть:

>>> m.select('[Gmail]/Sent Mail') 
('OK', ['35']) 
>>> result, data = m.uid('search', None, "ALL") 
>>> data 
['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35'] 

Сначала я собрать это список объектов не является строкой, потому что, когда я бегу

>>> print data.split(' ') 
Traceback (most recent call last): 
File "<console>", line 1, in <module> 
AttributeError: 'list' object has no attribute 'split' 

почему не там нет запятых? и почему появляется на работу

>>> print data[0].split(' ') 
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35'] 

ответ

6

Эта демонстрация должна ответить на ваш вопрос:

>>> data = ['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35'] 
>>> type(data) # It is a list 
<type 'list'> 
>>> len(data) # It has one item 
1 
>>> type(data[0]) # That item is a string 
<type 'str'> 
>>> data[0] 
'1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35' 
>>> data[0].split(' ') # Like all strings, it has a `split` method 
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15','16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31','32', '33','34', '35'] 
>>> 

Таким образом, data - это список с одним элементом, который является строкой. Более того, запись data[0].split(' ') вызывает метод split этой строки и разделяет его на пробелы.

+0

Спасибо, что расчистил это – user61629

4

Это одна строки в списке

>>> type(['1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35']) 
<type 'list'> 
>>> [type('1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35')] 
[<type 'str'>] 

следующих работ, потому что str.split(' ') расколов каждый белого символ пробела и data[0] означает, что первый элемент в data нижеследующий это строка:

>>> print data[0].split(' ') #You've selected the string out of the list 
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35'] 
+0

спасибо - отличный ответ. - Билл – user61629

Смежные вопросы