манипулирование элементами списка python - PullRequest
3 голосов
/ 11 марта 2010
line = "english: while  french: pendant que  spanish: mientras  german: whrend "

words = line.split('\t')

for each in words:
 each = each.rstrip()

print words

строка в 'line' разделена символом табуляции, но также содержит один символ пробела после каждого переведенного слова, поэтому, хотя split возвращает список, который мне нужен, каждое слово раздражает пробел в конце строки.

в цикле я пытаюсь просмотреть список и удалить все оставшиеся пробелы в строках, но кажется, что он работает, предложения?

Ответы [ 3 ]

2 голосов
/ 11 марта 2010

Просто line.split() может дать вам список раздетых слов.

Обновление each внутри цикла не вносит никаких изменений в список words

Должно быть сделано так

for i in range(len(words)):
    words[i]=words[i].rstrip()

Или

words=map(str.rstrip,words)

Подробнее о карте см. В документах .

Или один лайнер со списком

words=[x.rstrip() for x in line.split("\t")]

Или с регулярным выражением .findall

words=re.findall("[^\t]+",line)
1 голос
/ 11 марта 2010
words = line.split('\t')
words = [ i.rstrip() for i in words ]
0 голосов
/ 11 марта 2010

Вы можете использовать регулярное выражение:

import re
words = re.split(r' *\t| +$', line)[:-1]

Этим вы определяете возможную последовательность как разделитель. Он также позволяет использовать более одного пробела из-за оператора * (или вообще без пробела).

EDIT: исправлено после того, как Роджер Пэйт указал на ошибку.

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