Python:替换,rstrip()无法删除换行符

时间:2011-02-21 15:34:16

标签: python replace newline

我有一个信息电子表格(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 个答案:

答案 0 :(得分:10)

来自python手册

  

str.replace(旧,新[,计数])
   返回字符串的副本,其中所有出现的substring old都替换为new 。如果给出了可选参数计数,则仅替换第一次计数出现次数。

如您所见,它不会取代“就地”,而是尝试:

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

答案 1 :(得分:2)

替换不到位。

所以

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

答案 2 :(得分:1)

不要忘记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”之类的东西,这可能对你没有关系,但是要注意这一点。