当我获得UCS-4字符时,Pygame和Pyglet都崩溃了:
exceptions.UnicodeError:找到'\ uFFFF'上方的Unicode字符;不支持
如何使用正则表达式过滤所有这些字符?
答案 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字体模块。