从文本文件中的给定字符串创建字典

时间:2016-12-03 22:01:40

标签: python string dictionary

我有一个带有这种格式的字符串的文件:.B:13& A:4& I:1& I:!& H:| - |& H:} {& B:!3& H:[ - ]&安培;&安培;

首先是"。"以"&"结尾,用"&"分隔每个条目键值对。最后用":"
将每个键与其对应的值分开 这就是我到目前为止所做的:

//读取数据
filehndl = open("text.dat") filedata = filehndl.read() filehndl.close()

但我不确定如何剥离和拆分数据以创建字典。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

1个衬垫版本假设您的filedata也将是1个衬垫

在剥离&.之后,按&分割dict项目,然后按:

分割键值对
filedata = r'.B:13&A:4&I:1&I:!&H:|-|&H:}{&B:!3&H:[-]&&'
d = dict( i.split(':') for i in filedata.strip('.&\r\n').split('&') )
# {'A': '4', 'I': '!', 'B': '!3', 'H': '[-]'}

但是这并没有注意使用相同键的重复项目,例如,您重复了B次键,后面的B:!3会覆盖之前的B:13

答案 1 :(得分:0)

我将假设您的文件只有一行并且您没有处理引用,因此您可以使用生成器理解来执行此操作:

with open("yourfile.txt") as file:
    data = file.read().strip()
    if data.startswith(".") and data.endswith("&"):
        clean = data.lstrip(".").rstrip("&")
        print dict(item.split(":") for item in clean.split("&"))

这里的重要一点是:

dict(item.split(":") for item in clean.split("&"))

这会将您的字符串拆分为&字符,然后再按:字符拆分,最后再转换为"转换"字典中的列表。