日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Python轉(zhuǎn)換全角字符串為半角

關(guān)于全角轉(zhuǎn)換為半角的問題,其實源自在公司的運營人員在輸入法切換的時候選擇了全角,結(jié)果導(dǎo)致程序有時候沒有辦法進行解析。

成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需網(wǎng)站制作,是成都網(wǎng)站開發(fā)公司,為石牌坊提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站制作熱線:13518219792

為了避免這樣的問題再次出現(xiàn),于是就有了將全角轉(zhuǎn)換為半角的問題了。

在這里,會對以下內(nèi)容進行描述:

  • 什么是全角
  • 如何將全角字符轉(zhuǎn)換為半角
  • 使用python實現(xiàn)上述轉(zhuǎn)換操作

我們知道在編碼中,存儲在計算機中僅僅是1個數(shù)字,而編碼其實充當(dāng)?shù)氖?種轉(zhuǎn)換的過程,如果將1個字符轉(zhuǎn)換為1個數(shù)字而問題。

全角和半角

一般情況下,普通的英文字符只占用1個字節(jié)的空間,而1個字節(jié)有8位,因此可以存儲256個字符。而漢字、日語及朝鮮文字這樣CJK的文字很明顯不止256個,因此會使用2個字節(jié)來存儲。

而在使用英文輸入法時,我們將1個英文字符所占的位置稱為半角。而由于1個漢字占用2個英文字符的位置,因為我們將其稱為全角。

需要注意的是,只有在支持漢字等語言的計算及上才存在全角和半角的概念。另外,雖然通常情況下的英文字母、數(shù)字鍵及符號鍵都是半角的,但是為了排列整齊,英文和其他拉丁文的字符和標(biāo)簽也可以使用全角格式。

因此,我們知道全角需要占用2個字節(jié),而半角則占用1個字節(jié)。

全角轉(zhuǎn)換為半角

在ASCII編碼中,我們知道可以打印的字符只有127-33=94個。在這里,我們需要去除del鍵及ASCII編碼表中前32位。

由于半角和全角只是占用字節(jié)個數(shù)的不同,因此全角可打印的字符也是94個。因此這2者之間是存在規(guī)律的,比如我們假設(shè)半角a字符的在計算機中存儲的數(shù)字為60,而全角的a字符在計算機中存儲的數(shù)字為1200。而假設(shè)a的下1個字符為b,其存儲的數(shù)字為61, 那么全角的b字符存儲的數(shù)字應(yīng)為1201。

因此,這種一一映射的關(guān)系就查看各種規(guī)范中是如何定義的了。不同的規(guī)范定義會有所不同。

由于在Unicode規(guī)定中,半角字符是從33開始,到126結(jié)束。而Unicode中全角的編碼是從65281開始到65374結(jié)束。

細心的你們會發(fā)現(xiàn),這里少了1個字符,那就是空格。在半角中,空格是32,而在全角中它是12288。

python的實現(xiàn)轉(zhuǎn)換

現(xiàn)在,我們使用python來實現(xiàn)轉(zhuǎn)換的操作,我們會檢查給定的字符是否為全角,只有在全角的情況下才進行轉(zhuǎn)換的操作。

 
 
  1. def FullToHalf(s): 
  2.     n = [] 
  3.     s = s.decode('utf-8') 
  4.     for char in s: 
  5.         num = ord(char) 
  6.         if num == 0x3000: 
  7.             num = 32 
  8.         elif 0xFF01 <= num <= 0xFF5E: 
  9.             num -= 0xfee0 
  10.         num = unichr(num) 
  11.         n.append(num) 
  12.     return ''.join(n) 

 

在這里,我們對字符串進行遍歷,然后判斷其字符的大小,如果給定的字符是全角則將其進行減法操作。***將其組裝在一起返回就可以了。

然后我們進行如下的測試:

 
 
  1. s = "張三,是1個帥哥。" 
  2. result = FullToHalf(s) 
  3. print result 
  4. print '-' * 80 
  5. print s 

 

其結(jié)果如下所示:

 
 
  1. 張三,是1個帥哥。 
  2. ----------------------------------------------------------------------- 
  3. 張三,是1個帥哥。 

 

當(dāng)然,除了以上的方式外,還有其他的方式將全角轉(zhuǎn)換為半角。比如我隔壁那個搞python的哥們直接就用正則進行匹配然后批量的進行轉(zhuǎn)換。

由于我比較懶和能力比較有限,只好通過上面的方式來簡化我的工作量。


新聞名稱:使用Python轉(zhuǎn)換全角字符串為半角
標(biāo)題路徑:http://m.5511xx.com/article/djciode.html