2008-11-30 74 views
0

curses.ascii模块定义了一些很好的功能,例如可以识别哪些字符可打印(curses.ascii.isprint(ch))。python curses.ascii取决于语言环境?

但是,根据使用的区域设置,可以打印不同的字符代码。举例来说,有一定的润色人物:

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

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

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

这是一种场所不友好的。

回答

4

如果转换的字符为Unicode那么你可以使用unicodedata:

>>> unicodedata.category(u'ą')[0] in 'LNPS' 
True 
2

那么,它被称为curses.ascii,因此使用ASCII规则有什么可打印的不应该是一个惊喜。如果您使用的是ISO 8位代码,或者您正在使用已知代码页进行操作,则需要与实际代码及其显示内容相对应的规则。

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

对于应用程序可接受和不可接受的内容,即使可显示,也需要考虑一些问题。