python - 将格式不正确的字符串转换为字典?
问题描述
现在的问题是我有一个字符串
'{ecl:gry, hcl:#888785, eyr:2023, cid:63, iyr:2019, hgt:177cm, pid:656793259}'
我无法将 ast.literal_eval 转换为 dict,因为它的格式不正确。所以我尝试用引号包裹字母数字字符。
output = ""
quoting = False
for char in string:
if char.isalnum():
if not quoting:
output += '"'
quoting = True
elif quoting:
output += '"'
quoting = False
output += char
但是,一些键值对的值具有特殊字符开头。这导致:
"hcl":#"888785",
代替:
"hcl":"#888785",
因此,我能够为 ast.literal_eval() 重新格式化字符串的最接近方法是
{"ecl":"gry", "hcl":#"888785", "eyr":"2023", "cid":"63", "iyr":"2019", "hgt":"177cm", "pid":"656793259"}
如何在将此字符串转换为字典的同时包含特殊字符?
解决方案
您可以在生成器表达式中使用split
andstrip
来使其在一行中工作:
s = "{ecl:gry, hcl:#888785, eyr:2023, cid:63, iyr:2019, hgt:177cm, pid:656793259}"
d = dict(e.split(":") for e in s.strip("{},").split())
推荐阅读
- cordova - cordova-plugin-mobile-ocr 有什么替代方案吗?
- .net - 发布具有区域的 ASP.Net 应用程序
- pdf - 包含 Jupyter cding 和返回 Jupyter 的内容的 Pdf
- python - 在 Networkx Python 中找到最高中心度度量
- java - 使用 Java 获取终端(TTY、命令提示符)的大小
- plsql - 我正在尝试在 PL/SQL 中解析 XML。我无法从标签中检索属性值,我做错了什么?
- mysql - MySQL 查询需要帮助形成
- android - 如何在 React Native 中修复“无法运行 Jetifier”
- spring - Spring Data solr 将字段类型创建为 text_general 即使我们提到为字符串
- python - 从 S3 到 Sagemaker train 的 pytorch 脚本的图像路径