Python使用eval解析Windows文件路径时出错的求助
解决Python解析带反斜杠路径字符串的问题
问题出在你定义的字符串本身就已经被Python转义了——'["c:\\path\\to\\knowwhere"]'实际存储的内容里,\t已经被解析成制表符,而不是字面量的\t,所以不管用eval、ast.literal_eval还是exec,都会把制表符保留下来,导致路径失效。
给你几个可行的解决办法:
1. 用原始字符串定义输入
如果这个路径字符串是你自己写的,直接在字符串前加r(原始字符串标记),让Python不解析反斜杠:
import ast _path = r'["c:\path\to\knowwhere"]' result = ast.literal_eval(_path) # 输出:['c:\\path\\to\\knowwhere'],路径正常
原始字符串里的反斜杠会被当作字面量处理,不会被转成制表符或其他转义字符。
2. 预处理外部传入的字符串
如果这个字符串是从外部获取的(比如文件、接口返回),先把字符串里的单个反斜杠替换成双反斜杠,再用ast.literal_eval解析:
import ast _path = '["c:\\path\\to\\knowwhere"]' # 假设这是外部传入的字符串 # 替换反斜杠为转义后的双反斜杠 processed_path = _path.replace('\\', '\\\\') result = ast.literal_eval(processed_path)
3. 用json模块解析
json的字符串转义规则和Python兼容,用json.loads处理更稳妥,同样需要先转义反斜杠:
import json _path = '["c:\\path\\to\\knowwhere"]' processed_path = _path.replace('\\', '\\\\') result = json.loads(processed_path)
注意:永远优先用ast.literal_eval或json模块,别用eval——eval会执行任意代码,存在安全风险。
内容的提问来源于stack exchange,提问作者Ephreal
相关产品推荐
相关产品推荐

