我是python的新手,我想用例如列表中的字符替换字符串中的字符。
tagFinder = ['<', '>','&']
safeTag = ['<','>','&']
for i in content:
return content.replace(tagFinder[i],safeTag[i]
我一直收到以下错误
TypeError:list indices必须是整数,而不是str
有人可以提前帮助一位兄弟,谢谢!答案 0 :(得分:3)
你可能打算
for i in range(len(tagFinder)):
content = content.replace(tagFinder[i],safeTag[i])
..........
return content
而不是
for i in content:
return content.replace(tagFinder[i],safeTag[i])
并且由于return语句,您也过早地退出循环。 return语句应该是函数中的最后一个语句,假设这些语句在函数中
但是最好在这里使用内置的zip
for src, dest in zip(tagFinder , safeTag ):
content = content.replace(src, dest)
..........
return content
但是,除非这是作业的一部分,否则你应该使用标准库来转义你的html字符串。在这种特殊情况下,cgi将非常有用。
>>> import cgi
>>> cgi.escape(data).encode('ascii', 'xmlcharrefreplace')
'<>&'
答案 1 :(得分:0)
如果您坚持手动操作:
tagFinder = ['<', '>','&']
safeTag = ['<','>','&']
for tag, safe in zip(tagFinder, safeTag):
content = content.replace(tag, safe)
但是有一种更好的方法可以在Python中转义HTML字符:
import cgi
content = cgi.escape(content)