正则表达式匹配'\ uFFFF'上方的所有unicode字符

时间:2016-03-25 19:23:52

标签: python regex unicode ucs2

当我获得UCS-4字符时,Pygame和Pyglet都崩溃了:

  

exceptions.UnicodeError:找到'\ uFFFF'上方的Unicode字符;不支持

如何使用正则表达式过滤所有这些字符?

2 个答案:

答案 0 :(得分:1)

虽然您的问题要求使用正则表达式,但它并不是最合适的工具。您可以迭代变量中的每个字符使用ord(c) > 0xFFFF来检测有问题的字符。

但是如果你需要正则表达式,请尝试(python3)

import re
r1 = re.compile("[\U00010000-\U0010FFFF]")
m1 = r1.search( "Text\u00A0\U0001FFFF" )
print (m1.group())
print (m1.start())
print (m1.end())

对于python2,只需在字符串文字之前添加“u”(使它们成为unicode)。

答案 1 :(得分:0)

这里的字体实际上可能是真正的问题,所以我不确定使用正则表达式做什么好的过滤会对你有所帮助。我建议您查看 pygame.freetype 模块,因为它不限制使用高于\uFFFF范围的代码点。

  

使用pygame.freetypeEnhanced Pygame模块进行加载和   将基于pygame.ftfont的计算机字体渲染为pygame.fontpygame   用于加载和渲染字体的模块定义环境变量   在第一次导入pygamethe顶级pygame之前PYGAME_FREETYPE   包。 pygame.ftfont是一个pygame.fontpygame模块,用于加载和   渲染字体兼容模块,它传递除了一种字体之外的所有字体   模块单元测试:它没有UCS-2的限制   基于SDL_ttf的字体模块,因此无法引发代码异常   点大于'uFFFF'。如果pygame.freetypeEnhanced Pygame模块   用于加载和渲染计算机字体是不可用的   将加载SDL_ttf字体模块。

http://www.pygame.org/docs/ref/font.html