我有一个json对象的字符串化python列表,我有部分lexed。
但是我留下了诸如“u'Grimsby”或“u'Amsterdam”之类的令牌,我正在努力摆脱前面的u而不破坏实际上应该以“你”开头的单词标记。
所以我希望有人可以帮我写一个
t_ignore
或
def t_u(token):
将安全地摆脱这些“你”
感谢您的帮助。
答案 0 :(得分:1)
如果存在非ascii字符,您将无法始终将unicode安全地转换为字符串,例如str(u'ü')
将会引发:
UnicodeEncodeError:'ascii'编解码器无法对位置0中的字符u'\ xfc'进行编码:
序数不在范围内(128)
但您可以按照以下方式使用它并保留u
:
def t_unicode(token):
r'u\'[^\']*\'|u\"[^"]*\"'
注意:当您print u'ü'
时,它只显示ü
(所以你不是问题)。
根据上下文,如果你真的想要,你可以忽略u
(但因为它仍然是一个unicode字符串,这似乎有点无意义):
from __future__ import unicode_literals
def t_u(token):
r'u'
然后在你的ply中忽略u
(假设string
已定义):
def p_unicode_string(p):
'expression : u string'
p[0] = p[2]