gpt4 book ai didi

python - Pyparsing、Python 3 和 Unicode 字节顺序标记

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:48 25 4
gpt4 key购买 nike

我有一个 UTF-8 编码的文本文件,带有字节顺序标记 - 也就是说,前几个字节是 EF BB BF 0D 0A 4D...(这是一个 Visual Studio VS 2013 生成的解决方案文件)。

我正在尝试使用 PyParsing 解析它,使用 parseFile() 方法和 Python 3。在 Python 2 中,我可以这样做:

import pyparsing as pp
bom = pp.Optional(unicode(unichr(0xfeff)).encode('utf-8')).suppress()

获取一个可选的字节顺序标记。但是在 Python 3 中,unicodeunichr 函数已经消失,因为所有字符串都是 Unicode。所以我尝试了这个:

bom = pp.Optional(chr(0xfeff)).suppress()

还有这个:

bom = pp.Optional('\ufeff').suppress()

但都不匹配文件的开头。我用谷歌搜索了一段时间,但似乎找不到任何相关内容。

如何匹配(或忽略!)Unicode 字节顺序标记?

最佳答案

使用utf_8_sig编码类型打开文件:

p.parseFile(open('filename.sln', encoding='utf_8_sig'))

如果 BOM 存在,则该 BOM 将被隐藏。

来自编解码器模块:

On encoding a UTF-8 encoded BOM will be prepended to the UTF-8 encoded bytes. For the stateful encoder this is only done once (on the first write to the byte stream). For decoding an optional UTF-8 encoded BOM at the start of the data will be skipped.

关于python - Pyparsing、Python 3 和 Unicode 字节顺序标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com