我需要一種方法在純Python 2.6中將字符串從標準ASCII和Unicode FULLWIDTH字符中進行轉換,反之亦然。該字符串也可能包含符號。在Python中將Unicode全寬轉換爲標準ASCII(並返回)
我試過unicodedata.normalize,但它不轉換符號,而且是單向的。在其他問題中發現的其他解決方案對我的程序來說效果並不理想(很多不會轉換符號)。
我正在嘗試爲PS2創建一個savefile讀寫器。例如我從文件中讀取字符串:
'\x82g\x82\x81\x82\x8c\x82\x86\x81|\x82k\x82\x89\x82\x86\x82\x85\x82r\x82\x99\x82\x93\x82\x94\x82\x85\x82\x8d\[email protected]\x82c\x82\x81\x82\x94\x82\x81'
即s-jis
-encoded,我.decode('s-jis')
對其進行解碼:
u'\uff28\uff41\uff4c\uff46\u2212\uff2c\uff49\uff46\uff45\uff33\uff59\uff53\uff54\uff45\uff4d\u3000\uff24\uff41\uff54\uff41'
我打印:
Half−LifeSystem Data
這是我需要轉換爲ASCII的FULLWIDTH字符串;它應該成爲這樣的:
'Half-LifeSystem Data'
(有Life
和System
之間沒有任何東西)
請注意,我選擇了這個保存,因爲它包含了兩個最經常性的符號,-
和空間。
此外,我必須能夠以相同的方式重新編碼它,因爲用戶可能會重命名保存,所以我必須從輸入對話框中取出字符串並再次將其寫入文件。
簡單的「轉換」是通過字符串數組掃描並刪除所有其他字節(總是0xFF的正弦這是標準的ASCII) – Floris 2013-05-01 11:48:40
你需要創建我想你自己的ASCII碼到全角碼的映射。 Unicode規範化數據庫確實爲您提供了我所看到的wide-to-ascii映射,但反之亦然。這不是Python限制。 – 2013-05-01 11:48:50
@弗洛里斯:不,那是不正確的映射。 'U + FF48'是*小寫*'H',所以ASCII 0x68。 – 2013-05-01 11:49:36