我正在尝试解析文本文件(Valve-KeyValues语言文件),但遇到一些问题。 我正在使用该来解析其他KeyValues文件,并且从我收集的内容来看,它可以完美运行,但是对于语言文件,它仅返回一个空dict。
我尝试了一些简单的操作,例如遍历文件中的所有行并检查字符串是否存在(我只是通过查看文件就知道字符串存在),但它从未找到过。 单个字符似乎可以工作。
如果我将这些行直接打印到控制台中,则看起来每个字符之间都有一个空格。 我将文件上传到这里的 google驱动器中。

这是一个语言文件,所以我想它可以以某种不同的编码存储,但是我无法通过google /找到任何东西,我真的不知道在这里搜索什么。

===============>>#1 票数: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模块

import codecs
import vdf
d = vdf.load(codecs.open('dota_english.txt', 'r', encoding='utf-16'))

===============>>#2 票数:0

看起来像是其中带有xml的json文件。 您可以上传您的源代码吗? 有很多json解析器。 您可以使用内置的json模块和xmllib。

  ask by Ben T translate from so

未解决问题?本站智能推荐: