首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用带有for循环的列表替换字符串

使用带有for循环的列表替换字符串
EN

Stack Overflow用户
提问于 2015-04-26 09:52:14
回答 2查看 157关注 0票数 0

我是python的新手,例如,我想用列表中的字符替换字符串中的字符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tagFinder = ['<', '>','&']
safeTag = ['&lt;','&gt','&amp']

for i in content:
    return content.replace(tagFinder[i],safeTag[i]

我一直收到以下错误

TypeError:列表索引必须是整数,而不是字符串

有没有人能帮帮我的兄弟,提前谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-04-26 09:53:35

你可能是有意

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in range(len(tagFinder)):
    content = content.replace(tagFinder[i],safeTag[i])
..........
return content

而不是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for i in content:
    return content.replace(tagFinder[i],safeTag[i])

而且,由于return语句,您还过早地退出了循环。返回语句应该是函数中的最后一条语句,假设这些语句位于函数中

但是,在这里使用内置的zip总是更好的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for src, dest in zip(tagFinder , safeTag ):
    content = content.replace(src, dest)
..........
return content

但是,除非这是家庭作业的一部分,否则您应该使用标准库来转义您的html字符串。在这种特殊情况下,cgi将非常有用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import cgi
>>> cgi.escape(data).encode('ascii', 'xmlcharrefreplace')
'&lt;&gt;&amp;'
票数 3
EN

Stack Overflow用户

发布于 2015-04-26 09:54:35

如果您坚持要手动完成此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tagFinder = ['<', '>','&']
safeTag = ['&lt;','&gt','&amp']

for tag, safe in zip(tagFinder, safeTag):
    content = content.replace(tag, safe)

但在Python中有一种更好的方法来转义HTML字符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cgi
content = cgi.escape(content)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29876127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文