Мне нужно взять большой список слов в форме:
['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
а затем, используя функцию полосы, превратите ее в:
['this', 'is', 'a', 'list', 'of', 'words']
Я думал, что то, что я написал, сработает, но продолжаю получать сообщение об ошибке:
"объект" список "не имеет атрибута" полоса ""
Вот код, который я пробовал:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
strip_list
19 раз, а затем добавляете зачеркнутые строки. От этого кода очень плохо пахнет. Кроме того, если вы получили этот материал из файла, вы должны удалить его по пути - создание большого списка, а затем вставка его в другой большой список - не лучшая идея. Также 2, ваш код не должен зависеть от знания длины самого длинного слова / строки. Сделайте шаг назад - чего вы пытаетесь достичь? Что ты будешь делатьstrip_list
?Ответы:
источник
str.strip
работает , только если вы уверены, что список не содержит строк Unicode. Если он может содержать как 8-битные строки,lambda s: s.strip()
так и строки Юникода, используйте, как указано выше, или используйтеstrip
функцию, которую вы можете импортировать изstrings
модуля.list
, чтобы онlist(map(str.strip, my_list))
. Также проверьте это: ссылка .понимание списка?
[x.strip() for x in lst]
источник
Вы можете использовать списки понимания :
Или
map
функция:источник
0
значениями в начале списка. Хотя я действительно не могу представить, чего вы пытаетесь достичь, помещая их в тот же список результатов ...strip_list = list(map(str.strip, lines))
такой, как map () возвращает итератор карты. docs.python.org/3/library/functions.html#mapЭто можно сделать с помощью списков, как определено в PEP 202.
источник
list
наmap
:)Все остальные ответы, и в основном о понимании списка, великолепны. Но просто чтобы объяснить вашу ошибку:
a
является членом вашего списка, а не индексом. Вы могли бы написать вот что:Еще один важный комментарий: пустой список можно создать следующим образом:
Но это не так полезно, как
.append
добавляет то в ваш список. В вашем случае бесполезно создавать список со значениями по умолчанию, так как вы будете создавать его элемент для каждого элемента при добавлении разделенных строк.Итак, ваш код должен быть таким:
Но, безусловно, лучший - это этот, потому что это одно и то же:
Если у вас есть что-то более сложное, чем просто a
.strip
, поместите это в функцию и сделайте то же самое. Это наиболее удобный способ работы со списками.источник
Если вам нужно удалить только завершающие пробелы, вы можете использовать
str.rstrip()
, что должно быть немного более эффективным, чемstr.strip()
:источник
Вывод:
источник