Python: Replace, rstrip () не может удалить переводы строк - PullRequest
2 голосов
/ 21 февраля 2011

У меня есть электронная таблица информации (CSV-файл UTF-8, считываемый модулем csv), в которой содержится информация о большом количестве продуктов, которые необходимо добавить в базу данных инвентаризации.Я пытаюсь настроить описания из новых строк текста в теги html-списка.

У меня проблема в том, что следующие строки не могут заменить символ новой строки в строке:

line[2] = "<ul><li>" + line[2]
line[2].replace('\n', '</li><li>')
line[2] += "</li></ul>"

Строка продолжает содержать символы новой строки, даже когда вторая строка заменяется на:

line[2] = line[2].rstrip()

Что происходит и что я напутал?=)

Ответы [ 3 ]

10 голосов
/ 21 февраля 2011

Из руководства по питону

str.replace (старый, новый [, count])
Возвращает копию строки, в которой все вхождения подстроки old заменены на новые . Если указан необязательный аргумент count, заменяются только первые вхождения count.

Как видите, он не заменяет "на месте", вместо этого попробуйте:

line[2] = "<ul><li>" + line[2]
line[2] = line[2].replace('\n', '</li><li>')
line[2] += "</li></ul>"
2 голосов
/ 21 февраля 2011

Замена не на месте.

Так же, как и

line[2] = "<ul><li>" + line[2].replace('\n', '</li><li>') + "</li></ul>"
1 голос
/ 21 февраля 2011

Не забудьте escape !

escaped = cgi.escape(line[2].rstrip()).replace("\n", "</li><li>")
line[2] = "<ul><li>%s</li></ul>" % escaped

Str.replace возвращает копию вместо изменения на месте, а rstrip без аргументовубрать все оставшиеся пробелы.Так как это для HTML и конечный пробел, вероятно, не будет включать в себя что-то вроде "\ n \ n", это, вероятно, не имеет значения для вас, но об этом нужно знать.

...