У меня есть текстовый файл в кодировке 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 функции unicode
и unichr
исчезли, поскольку все строки имеют кодировку Unicode. Итак, я попробовал это:
bom = pp.Optional(chr(0xfeff)).suppress()
и это:
bom = pp.Optional('\ufeff').suppress()
но ни один из них не соответствует началу файла. Я некоторое время гуглил, но не могу найти ничего подходящего.
Как я могу сопоставить (или просто игнорировать!) Знак порядка байтов Unicode?