1

私は部分的にlexedしたjsonオブジェクトの文字列化されたpythonリストを持っています。

しかし、「u'Grimsby'」や「u'Amsterdam'」などのトークンが残っており、実際に「u」で始まるはずの単語トークンを損傷することなく、先行する u を取り除くのに苦労しています。

だから私は誰かが私が書くのを手伝ってくれることを望んでいました

 t_ignore 

または

def t_u(token):

これらの「u」を安全に取り除く

ご協力いただきありがとうございます。

4

1 に答える 1

1

非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]
于 2012-10-27T10:40:52.560 に答える