非ASCII文字がある場合、常にUnicodeを文字列に安全に変換できるとは限りません。たとえば、次のようstr(u'ü')になります。
UnicodeEncodeError: 'ascii' コーデックは位置 0 の文字 u'\xfc' をエンコードできません:
序数が範囲内にありません(128)
ただし、次のように lex して、次のように保持できますu。
def t_unicode(token):
r'u\'[^\']*\'|u\"[^"]*\"'
print u'ü'注:表示のみの場合ü(したがって、u は問題になりません)。
.
コンテキストによっては、本当に必要な場合は無視できますu (ただし、それでも Unicode 文字列であるため、これは少し無意味に思えます)。
from __future__ import unicode_literals
def t_u(token):
r'u'
そして、プライで無視します(すでに定義されているとu仮定します):string
def p_unicode_string(p):
'expression : u string'
p[0] = p[2]