Проблема заключается в том, что вы присвоить новое значение c
но не обновлять список. Для того, чтобы манипулировать список на месте вам нужно будет сделать что-то вроде этого:
cn = ['here,', 'there']
for index, c in enumerate(cn):
if c.endswith(','):
cn[index] = c[:-1]
print(cn)
['here', 'there']
Перечислите дает вам все элементы в списке, наряду с их индексом, а затем, если строка имеет Запятая вам просто обновите элемент списка и правый индекс.
Проблема с вашим кодом заключалась в том, что c
просто держал строку 'here,'
. Затем вы создали новую строку с запятой и назначили ее c
, это не повлияло на список cn
. Чтобы иметь какое-либо влияние на список, вам нужно установить новое значение в нужном месте.
Вы также можете использовать список понимание для того чтобы достигнуть того же результата, который мог бы быть более вещий для такой маленькой задачи: (как уже упоминалось @AdamSmith)
cn = [c[:-1] if c.endswith(',') else c for c in cn]
Это создает новый список из cn
, где каждый элемент возвращается без изменений, если он не заканчивается ,
, и в противном случае запятая обрезается перед возвратом строки.
Другая вещь, которую вы могли бы использовать встроенные функции rstrip
, но было бы удалить все запятые, испытания той не только один. Это будет выглядеть примерно так (опять @AdamSmith указал на это):
cn = map(lambda x: x.rstrip(','), cn)
@juanchopanza Не может согласиться с вами на этом; проблема здесь заключается не в том, как разбить запятую, а на то, как изменить элемент списка. –
@LevLevitsky Да, я склонен согласиться. – juanchopanza