我试图解析一个文本文件(Valve-KeyValues语言文件),但我遇到了一些问题。我使用这个library来解析其他KeyValues文件,它可以从我收集的内容中完美运行,但对于语言文件,它只返回一个空字典。
我尝试了一些简单的事情,比如遍历文件中的所有行并检查字符串是否存在(我知道字符串只是通过查看文件而存在)并且它从未找到它。单个字符似乎有用。
如果我将线条直接打印到控制台中,看起来每个角色之间都有一个空格。
我将文件上传到我的google驱动器here。
这是一个语言文件,所以我猜它可以存储在一些不同的编码中,但我无法通过谷歌找到任何东西/我真的不知道在这里搜索什么。
答案 0 :(得分:1)
实际上,您的文件似乎编码为UTF-16:
$ file ~/Downloads/dota_english.txt
~/Downloads/dota_english.txt: Little-endian UTF-16 Unicode C++ program
text, with very long lines, with CRLF line terminators
这符合您对每个角色之间的空间的描述" (UTF-16是一个双字节编码;对于ASCII文本,这意味着每个字符都表示为ASCII字节,后跟一个空字节,给出文本中的空格。)
您可以尝试在加载文件时指定编码,例如使用codecs
module:
import codecs
import vdf
d = vdf.load(codecs.open('dota_english.txt', 'r', encoding='utf-16'))
答案 1 :(得分:0)
它看起来像一种带有xml的json文件。你可以上传你的源代码吗?有许多json解析器。您可以使用内置的json模块和xmllib。