成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Python轉(zhuǎn)換全角字符串為半角

開發(fā) 開發(fā)工具
關(guān)于全角轉(zhuǎn)換為半角的問(wèn)題,其實(shí)源自在公司的運(yùn)營(yíng)人員在輸入法切換的時(shí)候選擇了全角,結(jié)果導(dǎo)致程序有時(shí)候沒有辦法進(jìn)行解析。 為了避免這樣的問(wèn)題再次出現(xiàn),于是就有了將全角轉(zhuǎn)換為半角的問(wèn)題了。

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

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

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

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

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

全角和半角

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

而在使用英文輸入法時(shí),我們將1個(gè)英文字符所占的位置稱為半角。而由于1個(gè)漢字占用2個(gè)英文字符的位置,因?yàn)槲覀儗⑵浞Q為全角。

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

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

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

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

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

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

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

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

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

現(xiàn)在,我們使用python來(lái)實(shí)現(xiàn)轉(zhuǎn)換的操作,我們會(huì)檢查給定的字符是否為全角,只有在全角的情況下才進(jì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) 

 

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

然后我們進(jìn)行如下的測(cè)試:

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

 

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

  1. 張三,是1個(gè)帥哥。 
  2. ----------------------------------------------------------------------- 
  3. 張三,是1個(gè)帥哥。 

 

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

由于我比較懶和能力比較有限,只好通過(guò)上面的方式來(lái)簡(jiǎn)化我的工作量。

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2009-08-21 09:09:05

C#字符串

2021-11-24 09:08:38

LeetCode字符串算法

2024-02-19 15:38:08

JsonPython字符串

2010-11-26 14:09:32

MySQL內(nèi)置函數(shù)

2010-03-10 15:06:16

python字符串

2024-03-12 07:35:39

Python字符串列表

2017-01-16 16:33:06

Python 字符串漏洞

2019-03-25 20:31:58

IP地址轉(zhuǎn)換數(shù)字

2021-08-20 06:58:31

C++Python函數(shù)

2021-12-29 16:40:54

Python語(yǔ)言字符串

2010-10-11 15:47:46

MySQL字符串大小寫

2023-10-27 07:03:22

字符串String類型

2023-08-21 10:28:00

字符串字符Python

2023-08-26 20:21:58

字符KotlinJava

2023-01-09 09:52:06

Bash字符串

2024-08-16 22:00:38

2010-07-14 16:10:37

Perl

2021-11-29 08:49:37

字符串轉(zhuǎn)換整數(shù)

2023-03-13 07:43:51

PHP類型轉(zhuǎn)換

2011-08-22 10:59:42

SQL Server日期時(shí)間格式轉(zhuǎn)換字符串
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 97碰碰碰 | 国产精品成人在线播放 | 亚洲一区成人 | 国产成人久久精品一区二区三区 | 91成人在线视频 | 亚洲一本 | 亚洲性视频 | 精品欧美乱码久久久久久 | 天天草草草 | 亚洲一区三区在线观看 | 天天在线操 | 亚洲成人久久久 | 午夜精品久久久久久久久久久久 | 日韩靠逼 | 国产精品久久久久久影视 | 成人3d动漫一区二区三区91 | 久久精品在线播放 | 久久777 | 成人免费共享视频 | 国产成人一区二区三区久久久 | 国产精品一区二区三区在线 | 亚洲一区二区三区在线视频 | 在线观看中文字幕av | 国产一区二区三区在线看 | 欧美999| 综合久久久 | 亚洲精品久久久久久久不卡四虎 | 91精品国产91久久久久久密臀 | 亚洲三区在线观看 | 精品欧美一区二区三区 | 精品国产一区二区三区久久久蜜月 | 成人国产精品久久久 | 日韩视频一区二区三区 | 久久国产婷婷国产香蕉 | 精品欧美乱码久久久久久1区2区 | 久久久久欧美 | 久久综合入口 | 亚洲精品区 | 久久久999精品 | 在线成人福利 | 一级特黄色毛片 |