我有一个带有这种格式的字符串的文件:.B:13& A:4& I:1& I:!& H:| - |& H:} {& B:!3& H:[ - ]&安培;&安培;
首先是"。"以"&"结尾,用"&"分隔每个条目键值对。最后用":"
将每个键与其对应的值分开
这就是我到目前为止所做的:
//读取数据
filehndl = open("text.dat")
filedata = filehndl.read()
filehndl.close()
但我不确定如何剥离和拆分数据以创建字典。任何帮助将不胜感激!
答案 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("&"))
这会将您的字符串拆分为&
字符,然后再按:
字符拆分,最后再转换为"转换"字典中的列表。