【发布时间】:2016-05-10 02:56:26
【问题描述】:
我有一个 UTF-8 编码的文本文件,其中存在字节顺序标记 - 也就是说,前几个字节是 EF BB BF 0D 0A 4D...(它是由 VS 2013 生成的 Visual Studio 解决方案文件)。
我正在尝试使用 PyParsing 解析这个,使用 parseFile() 方法和 Python 3。在 Python 2 中,我可以这样做:
import pyparsing as pp
bom = pp.Optional(unicode(unichr(0xfeff)).encode('utf-8')).suppress()
获取可选的字节顺序标记。但是在 Python 3 中,unicode 和 unichr 函数已经消失,因为所有字符串都是 Unicode。所以我尝试了这个:
bom = pp.Optional(chr(0xfeff)).suppress()
还有这个:
bom = pp.Optional('\ufeff').suppress()
但都不匹配文件的开头。我用谷歌搜索了一段时间,但似乎找不到任何相关的东西。
如何匹配(或忽略!)Unicode 字节顺序标记?
【问题讨论】:
-
Visual Studio 解决方案文件不是 XML 吗?
-
嗯,不是我正在看的那些。项目文件肯定是,但解决方案文件不是。
标签: python python-3.x unicode pyparsing python-unicode