Python3.0: تجميل وتويسيو
سؤال
عند محاولة ذلك tokenize
سلسلة في Python3.0، لماذا أحصل على رائدة 'utf-8'
قبل بدء الرموز؟
من python3 مستندات, tokenize
يجب الآن استخدامها على النحو التالي:
g = tokenize(BytesIO(s.encode('utf-8')).readline)
ومع ذلك، عند محاولة ذلك في المحطة، يحدث ما يلي:
>>> from tokenize import tokenize
>>> from io import BytesIO
>>> g = tokenize(BytesIO('foo'.encode()).readline)
>>> next(g)
(57, 'utf-8', (0, 0), (0, 0), '')
>>> next(g)
(1, 'foo', (1, 0), (1, 3), 'foo')
>>> next(g)
(0, '', (2, 0), (2, 0), '')
>>> next(g)
ما هو مع utf-8
الرمز المميز الذي يسبق الآخرين؟ وهذا يفترض أن يحدث؟ إذا كان الأمر كذلك، فهل يجب أن أتخطى فقط الرمز المميز الأول؟
تعديل
لقد وجدت أن نوع الرمز 57 هو tokenize.coding., ، والتي يمكن تصفيتها بسهولة خارج نطاق الرمز المميز إذا لزم الأمر.
المحلول
هذا هو ملف تعريف الارتباط الترميز للمصدر. يمكنك تحديد واحد صراحة:
# -*- coding: utf-8 -*-
do_it()
خلاف ذلك يفترض Python الترميز الافتراضي، UTF-8 في بيثون 3.
لا تنتمي إلى StackOverflow