curses.ascii
模块定义了一些很好的功能,例如可以识别哪些字符是可打印的(curses.ascii.isprint(ch)
)。
但是,根据正在使用的区域设置,可以打印不同的字符代码。例如,有一些抛光字符:
>>> ord('a')
97
>>> ord('ą')
177
>>>
我想知道,有没有更好的方法来判断数字是否代表curses.ascii
模块中使用的数字的可打印字符:
def isprint(c): return _ctoi(c) >= 32 and _ctoi(c) <= 126
这是一种不友好的语言环境。
答案 0 :(得分:4)
如果将字符转换为unicode,则可以使用unicodedata:
>>> unicodedata.category(u'ą')[0] in 'LNPS'
True
答案 1 :(得分:2)
嗯,它被称为curses.ascii,因此使用ASCII规则进行打印是不可错的。如果您使用的是ISO 8位代码,或者您使用的是已知代码页,则需要的规则与实际代码及其显示内容相对应。
我认为使用unicode字符和标准Unicode分类很好。这可能无法解决curses和控制台安排实际正确显示的问题。
即使可以显示,也需要考虑应用程序可接受和不可接受的内容。