2008-11-30 43 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分類是好的。這可能無法解決詛咒和控制檯安排實際上能夠正確顯示的內容。

對於應用程序可接受和不可接受的內容,即使可顯示,也需要考慮一些問題。