在Python中解析键值对

死蛋糕

因此,我有一个与JSON格式相似的键值文件,但它的区别足够大,以至于无法被Python JSON解析器接收。

例子:

"Matt"
{
    "Location"    "New York"
    "Age"         "22"
    "Items"
    {
        "Banana"    "2"
        "Apple"     "5"
        "Cat"       "1"
    }
}

有没有简单的方法来解析此文本文件并将值存储到数组中,以便我可以使用类似于Matt [Items] [Banana]的格式访问数据?每行只能有一对,并且括号应表示下降和上升。

时间

您可以re.sub用来“修复”您的字符串,然后解析它。只要格式在每一行上始终是单个带引号的字符串或一对带引号的字符串,您就可以使用该格式来确定在何处放置逗号和冒号。

import re
s = """"Matt"
{
    "Location"    "New York"
    "Age"         "22"
    "Items"
    {
        "Banana"    "2"
        "Apple"     "5"
        "Cat"       "1"
    }
}"""

# Put a colon after the first string in every line
s1 = re.sub(r'^\s*(".+?")', r'\1:', s, flags=re.MULTILINE)
# add a comma if the last non-whitespace character in a line is " or }
s2 = re.sub(r'(["}])\s*$', r'\1,', s1, flags=re.MULTILINE)

完成此操作后,您可以ast.literal_eval用来将其转换为Python字典。我将其用于JSON解析,因为它允许在末尾添加逗号,如果没有逗号,则将逗号放在何处的决定变得更加复杂:

import ast
data = ast.literal_eval('{' + s2 + '}')
print data['Matt']['Items']['Banana']
# 2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中解析键值日志

来自分类Dev

如何在python中解析非键值json文件

来自分类Dev

如果匹配键值则解析 JSON 数据并在 Python 中打印键值

来自分类Dev

在Android中解析XML键值对

来自分类Dev

在Python中绘制键值

来自分类Dev

解析数组中的JSON数组并使用键值

来自分类Dev

解析字符串中的键值

来自分类Dev

在Boost Spirit中解析嵌套的键值对

来自分类Dev

在Swift中解析动态可选键值JSON

来自分类Dev

解析数组中的JSON数组并使用键值

来自分类Dev

解析 PHP 中的配置文件(键值)

来自分类Dev

解析键值对

来自分类Dev

python中的组字典键值

来自分类Dev

在python中获取yaml键值

来自分类Dev

在字典python中的键值对中更改值

来自分类Dev

在python中从字典中删除多个键值对

来自分类Dev

在字典python中的键值对中更改值

来自分类Dev

python如何将css文件解析为键值

来自分类Dev

将JSON(在嵌套键值中)解析为CSV

来自分类Dev

动态键值的json解析中的抖动问题

来自分类Dev

如何在iOS中解析JSON空键值?

来自分类Dev

使用 shell 脚本解析 csv 文件中的键值

来自分类Dev

从Python中的字典列表中提取键值对

来自分类Dev

在python字典中对键值对的列表进行排序

来自分类Dev

比较python中特定键值对的不同字典?

来自分类Dev

python中的邮政编码键值对

来自分类Dev

从json数组python中删除冗余键值

来自分类Dev

比较python中特定键值对的不同字典?

来自分类Dev

如何使用python从URL中检索键值对