如何使用Python将含转义字符的字符串转换为列表
解决Python中HTML转义字符串转列表的问题
嘿,我来帮你搞定这个问题!你遇到的字符串是经过HTML实体转义的JSON格式,手动用字符串切片处理很容易因为嵌套引号、结构变化出问题,用专门的工具库处理会更可靠。
具体解决步骤
你的原始字符串是这样的:
sample_str = '["sample text1", "\'sample text2\'", "sample text3"]'
我们需要分两步处理:
- 把HTML转义的
"还原成普通双引号 - 将处理后的合法字符串解析成Python列表
方法一:用html+json模块(推荐)
这是最通用的方案,能正确处理各种转义场景:
import html import json # 1. 解码HTML实体,替换所有"为双引号 unescaped_str = html.unescape(sample_str) # 此时unescaped_str的值为:'["sample text1", "'sample text2'", "sample text3"]' # 2. 用json模块解析成列表 sample_str_to_list = json.loads(unescaped_str) # 验证结果 print(type(sample_str_to_list)) # 输出 <class 'list'> print(sample_str_to_list) # 输出: ['sample text1', "'sample text2'", 'sample text3']
方法二:用html+ast模块
如果处理后的字符串是合法的Python字面量,也可以用ast.literal_eval来解析,它比eval更安全,不会执行恶意代码:
import html import ast unescaped_str = html.unescape(sample_str) sample_str_to_list = ast.literal_eval(unescaped_str) # 同样能得到正确的列表结果 print(sample_str_to_list)
为什么不推荐字符串切片?
手动切片的方式完全依赖字符串的固定结构,一旦字符串里的元素数量、内容长度发生变化(比如新增元素、文本里出现特殊字符),切片就会失效。而用专门的解析工具能自适应处理各种合法的格式情况,稳定性和可读性都更强。
内容的提问来源于stack exchange,提问作者Crusader




