我有一个信息电子表格(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()
发生了什么事,我搞砸了什么? =)
答案 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”之类的东西,这可能对你没有关系,但是要注意这一点。