我是python的新手,我想用列表中的字符替换字符串中的字符,例如。使用带for循环的列表替换字符串
tagFinder = ['<', '>','&']
safeTag = ['<','>','&']
for i in content:
return content.replace(tagFinder[i],safeTag[i]
我不断收到以下错误
类型错误:列表索引必须是整数,而不是str的
可能有人请帮兄弟出来在此先感谢!
我是python的新手,我想用列表中的字符替换字符串中的字符,例如。使用带for循环的列表替换字符串
tagFinder = ['<', '>','&']
safeTag = ['<','>','&']
for i in content:
return content.replace(tagFinder[i],safeTag[i]
我不断收到以下错误
类型错误:列表索引必须是整数,而不是str的
可能有人请帮兄弟出来在此先感谢!
你可能打算
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')
'<>&'
如果你在做手工坚持:
tagFinder = ['<', '>','&']
safeTag = ['<','>','&']
for tag, safe in zip(tagFinder, safeTag):
content = content.replace(tag, safe)
但是有一个更好的方式来逃避在Python HTML字符:
import cgi
content = cgi.escape(content)
类型错误: '诠释' 对象不是可迭代 - 我认为这是一个错误? – NubmcNub
@NubmcNub:我的不好。我已经改正了排印错误 – Abhijit
感谢IM几乎没有,但是当我回到它,我得到这个 预计: '<p>的Hello World </P > ' 实际:' &lt; P&ampgtHello世界&lt;/P&ampgt' – NubmcNub