curses.ascii模块定义了一些很好的函数,例如,这些函数允许识别哪些字符是可打印的(curses.ascii.isprint(ch))。
但是,根据所使用的语言环境设置,可以打印不同的字符代码。例如,有某些波兰语字符:
>>> ord('a')
97
>>> ord('ą')
177
>>> 我想知道,有没有比curses.ascii模块中使用的更好的方法来判断数字是否代表可打印字符:
def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126这是一种不友好的地方。
发布于 2008-11-30 12:31:09
如果将字符转换为unicode,则可以使用unicodedata:
>>> unicodedata.category(u'ą')[0] in 'LNPS'
True发布于 2008-12-01 05:11:46
好吧,它被称为curses.ascii,所以使用ASCII码规则来处理可打印的内容并不奇怪。如果您使用的是ISO 8位代码,或者您正在使用已知的代码页进行操作,那么您将需要与实际代码及其显示内容相对应的规则。
我认为使用unicode字符和标准Unicode分类是很好的。这可能无法正确处理咒语和控制台排列实际显示的内容。
还需要考虑应用程序可接受和不可接受的内容,即使是可显示的。
https://stackoverflow.com/questions/328793
复制相似问题