x = u'\U0001f604abc' print('length:',len(x)) for i in x: print(i)
得到输出:
('length:', 5)
a
b
c
x 是 4 个字符,其中第一个是 4 字节字符,一个笑脸表情的 unicdoe 码,现在显然被拆分成了两个。我写的过滤函数就过滤失败了:
def filter_invalid_str(text):
return ''.join(map(lambda x: x if u'\u0000' < x < u'\uFFFF' else '_', text))
所以,明明一个字符为什么变成了两个,如何当作一个字符处理?
![]() | 1 Zzzzzzzzz 2016-01-21 19:19:55 +08:00 编译 python2 的时候加上--enable-unicode=ucs4 |
![]() | 2 Hackathon 2016-01-21 19:39:21 +08:00 |
![]() | 3 zeroten OP 或者,过掉 u'\u0000' < x < u'\uFFFF'之外的字符有什么好的实现方法? |
![]() | 5 Hackathon 2016-01-21 19:56:02 +08:00 |
![]() | 6 Hackathon 2016-01-21 19:56:08 +08:00 |