[英]Problems parsing a text file (encoding?)
我正在尝试解析文本文件(Valve-KeyValues语言文件),但遇到一些问题。 我正在使用该库来解析其他KeyValues文件,并且从我收集的内容来看,它可以完美运行,但是对于语言文件,它仅返回一个空dict。
我尝试了一些简单的操作,例如遍历文件中的所有行并检查字符串是否存在(我只是通过查看文件就知道字符串存在),但它从未找到过。 单个字符似乎可以工作。
如果我将这些行直接打印到控制台中,则看起来每个字符之间都有一个空格。 我将文件上传到这里的 google驱动器中。
这是一个语言文件,所以我想它可以以某种不同的编码存储,但是我无法通过google /找到任何东西,我真的不知道在这里搜索什么。
确实,您的文件似乎编码为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'))
看起来像是其中带有xml的json文件。 您可以上传您的源代码吗? 有很多json解析器。 您可以使用内置的json模块和xmllib。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.