Python将字符串放入字典中

时间:2017-09-01 16:31:37

标签: python python-3.x dictionary

我想将字符串转换为字典。我之前在一个文本文件中保存了这个字典。

现在的问题是,我不确定,键的结构如何。使用Counter(dictionaryName)生成值。字典非常大,所以我无法检查每个键以查看它是如何可能的。

键可以包含简单的引号,如',双引号",逗号和其他字符。那么有没有可能将它转换回字典?

例如,它存储在文件中:

Counter({'element0':512, "'4,5'element1":50, '4:55foobar':23,...})

我找到了以前的解决方案,例如json,但我的双引号有问题,我不能简单地拆分逗号。

4 个答案:

答案 0 :(得分:3)

如果您信任来源,请加载from collections import Countereval()字符串

答案 1 :(得分:2)

如下:

>> from collections import Counter
>> line = '''Counter({'element0':512, "'4,5'element1":50, '4:55foobar':23})'''
>> D = eval(line)
>> D
 Counter({"'4,5'element1": 50, '4:55foobar': 23, 'element0': 512})

答案 2 :(得分:1)

您可以移除Counter()部分,然后使用ast.literal_eval解析其余部分,只要它只涉及基本的Python数据类型:

import ast

def parse_Counter_string(s):
    s = s.strip()
    if not (s.startswith('Counter(') and s.endswith(')')):
        raise ValueError('String does not match expected format')
    # Counter( is 8 characters
    # 12345678
    s = s[8:-1]
    return Counter(ast.literal_eval(s))

将来,我建议您采用不同的方式来序列化数据。

答案 3 :(得分:0)

您可以使用demjson库来执行此操作,您可以直接在程序中使用

import demjson

counter = demjson.decode("enter your text here")

如果它在文件中,您可以执行以下步骤:

WD = dirname(realpath(__file__))
file = open(WD, "filename"), "r")
counter = demjson.decode(file.read())
file.close()