摘要:而在使用英文輸入法時我們將個英文字符所占的位置稱為半角。需要注意的是只有在支持漢字等語言的計算及上才存在全角和半角的概念。由于在規定中半角字符是從開始到結束。當然除了以上的方式外還有其他的方式將全角轉換為半角。
原文地址:
http://52sox.com/use-python-t...
關于全角轉換為半角的問題,其實源自在公司的運營人員在輸入法切換的時候選擇了全角,結果導致程序有時候沒有辦法進行解析。
為了避免這樣的問題再次出現,于是就有了將全角轉換為半角的問題了。
在這里,會對以下內容進行描述:
什么是全角
如何將全角字符轉換為半角
使用python實現上述轉換操作
我們知道在編碼中,存儲在計算機中僅僅是1個數字,而編碼其實充當的是1種轉換的過程,如果將1個字符轉換為1個數字而問題。
全角和半角一般情況下,普通的英文字符只占用1個字節的空間,而1個字節有8位,因此可以存儲256個字符。而漢字、日語及朝鮮文字這樣CJK的文字很明顯不止256個,因此會使用2個字節來存儲。
而在使用英文輸入法時,我們將1個英文字符所占的位置稱為半角。而由于1個漢字占用2個英文字符的位置,因為我們將其稱為全角。
需要注意的是,只有在支持漢字等語言的計算及上才存在全角和半角的概念。另外,雖然通常情況下的英文字母、數字鍵及符號鍵都是半角的,但是為了排列整齊,英文和其他拉丁文的字符和標簽也可以使用全角格式。
因此,我們知道全角需要占用2個字節,而半角則占用1個字節。
在ASCII編碼中,我們知道可以打印的字符只有127-33=94個。在這里,我們需要去除del鍵及ASCII編碼表中前32位。
由于半角和全角只是占用字節個數的不同,因此全角可打印的字符也是94個。因此這2者之間是存在規律的,比如我們假設半角a字符的在計算機中存儲的數字為60,而全角的a字符在計算機中存儲的數字為1200。而假設a的下1個字符為b,其存儲的數字為61, 那么全角的b字符存儲的數字應為1201。
因此,這種一一映射的關系就查看各種規范中是如何定義的了。不同的規范定義會有所不同。
由于在Unicode規定中,半角字符是從33開始,到126結束。而Unicode中全角的編碼是從65281開始到65374結束。
細心的你們會發現,這里少了1個字符,那就是空格。在半角中,空格是32,而在全角中它是12288。
現在,我們使用python來實現轉換的操作,我們會檢查給定的字符是否為全角,只有在全角的情況下才進行轉換的操作。
def FullToHalf(s): n = [] s = s.decode("utf-8") for char in s: num = ord(char) if num == 0x3000: num = 32 elif 0xFF01 <= num <= 0xFF5E: num -= 0xfee0 num = unichr(num) n.append(num) return "".join(n)
在這里,我們對字符串進行遍歷,然后判斷其字符的大小,如果給定的字符是全角則將其進行減法操作。最后將其組裝在一起返回就可以了。
然后我們進行如下的測試:
s = "張三,是1個帥哥。" result = FullToHalf(s) print result print "-" * 80 print s
其結果如下所示:
張三,是1個帥哥。 ----------------------------------------------------------------------- 張三,是1個帥哥。
當然,除了以上的方式外,還有其他的方式將全角轉換為半角。比如我隔壁那個搞python的哥們直接就用正則進行匹配然后批量的進行轉換。
由于我比較懶和能力比較有限,只好通過上面的方式來簡化我的工作量。
參考文章:
http://www.cnblogs.com/kaituo...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38094.html
摘要:前言最近在爬日文小說的過程中,經常遇到全角甚至和和半角混用,造成我強迫癥強烈不適,就著手專門寫一個腳本處理之思路首先在網上尋找看是否已經有現成庫腳本能做到,尋找一番之后只找到一些思路文章,這里就不重復了有一點要注意,不少文章里是的情況,里面 前言 最近在爬日文小說的過程中,經常遇到全角(甚至和和半角混用),造成我(強迫癥)強烈不適,就著手專門寫一個腳本處理之 思路 首先在網上尋找看是否...
摘要:序本文展示一下如何將進行半角與全角轉換。術語全角進制轉為進制半角進制轉為進制工具類全角空格半角空格全角半角轉換間隔驗證輸出工具類全角半角字符相互轉換 序 本文展示一下如何將char進行半角與全角轉換。 術語 全角 SBC case Sexagesimal to Binary Converter 60進制轉為2進制 半角 DBC case Decimal to Binary Con...
摘要:全角占兩個字節。漢字字符和規定了全角的英文字符及國標中的圖形符號和特殊字符都是全角字符。在全角中,字母和數字等與漢字一樣占據著等寬的位置。全角轉換為半角 1.什么是全角和半角? 全角:是一種電腦字符,是指一個全角字符占用兩個標準字符(或兩個半角字符)的位置。全角占兩個字節。 漢字字符和規定了全角的英文字符及國標GB2312-80中的圖形符號和特殊字符都是全角字符。在全角中,字母和數字等...
摘要:的簡明圖示使用說明是自帶的開發工具,參見下圖在的提示符后輸入代碼,回車,就可以執行此代碼,參見下圖下面演示用的編輯器編寫程序文件并運行程序文件將以為擴展名。輸出在屏幕上顯示數據,將數據保存至文件等。 python IDLE的簡明圖示使用說明 IDLE 是python自帶的開發工具,參見下圖...
閱讀 2461·2023-04-26 02:18
閱讀 1262·2021-10-14 09:43
閱讀 3822·2021-09-26 10:00
閱讀 6945·2021-09-22 15:28
閱讀 2535·2019-08-30 15:54
閱讀 2600·2019-08-30 15:52
閱讀 474·2019-08-29 11:30
閱讀 3465·2019-08-29 11:05