0

curses.ascii模块定义了一些很好的函数,例如允许识别哪些字符是可打印的(curses.ascii.isprint(ch))。

但是,根据使用的区域设置,可以打印不同的字符代码。例如,有某些波兰语字符:

>>> ord('a')
97
>>> ord('ą')
177
>>> 

我想知道,有没有更好的方法来判断一个数字是否代表可打印字符,然后是curses.ascii模块中使用的那个:

def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126

这是一种不友好的语言环境。

4

2 回答 2

4

如果将字符转换为 unicode,则可以使用 unicodedata:

>>> unicodedata.category(u'ą')[0] in 'LNPS'
True
于 2008-11-30T12:31:09.460 回答
2

好吧,它被称为 curses.ascii,所以使用 ASCII 规则来打印可打印的内容应该不足为奇。如果您使用 ISO 8 位代码,或者您从已知代码页进行操作,您将需要与实际代码及其显示内容相对应的规则。

我认为使用 unicode 字符和标准 Unicode 分类很好。这可能无法处理诅咒和控制台安排实际上将正确显示的内容。

还需要考虑应用程序可接受和不可接受的内容,即使是可显示的。

于 2008-12-01T05:11:46.040 回答