成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

smallStone / 3585人閱讀

摘要:而在使用英文輸入法時(shí)我們將個(gè)英文字符所占的位置稱為半角。需要注意的是只有在支持漢字等語言的計(jì)算及上才存在全角和半角的概念。由于在規(guī)定中半角字符是從開始到結(jié)束。當(dāng)然除了以上的方式外還有其他的方式將全角轉(zhuǎn)換為半角。

原文地址:

http://52sox.com/use-python-t...

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

什么是全角

如何將全角字符轉(zhuǎn)換為半角

使用python實(shí)現(xiàn)上述轉(zhuǎn)換操作

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

全角和半角

一般情況下,普通的英文字符只占用1個(gè)字節(jié)的空間,而1個(gè)字節(jié)有8位,因此可以存儲256個(gè)字符。而漢字、日語及朝鮮文字這樣CJK的文字很明顯不止256個(gè),因此會使用2個(gè)字節(jié)來存儲。
而在使用英文輸入法時(shí),我們將1個(gè)英文字符所占的位置稱為半角。而由于1個(gè)漢字占用2個(gè)英文字符的位置,因?yàn)槲覀儗⑵浞Q為全角。
需要注意的是,只有在支持漢字等語言的計(jì)算及上才存在全角和半角的概念。另外,雖然通常情況下的英文字母、數(shù)字鍵及符號鍵都是半角的,但是為了排列整齊,英文和其他拉丁文的字符和標(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ī)中存儲的數(shù)字為60,而全角的a字符在計(jì)算機(jī)中存儲的數(shù)字為1200。而假設(shè)a的下1個(gè)字符為b,其存儲的數(shù)字為61, 那么全角的b字符存儲的數(shù)字應(yīng)為1201。
因此,這種一一映射的關(guān)系就查看各種規(guī)范中是如何定義的了。不同的規(guī)范定義會有所不同。
由于在Unicode規(guī)定中,半角字符是從33開始,到126結(jié)束。而Unicode中全角的編碼是從65281開始到65374結(jié)束。
細(xì)心的你們會發(fā)現(xiàn),這里少了1個(gè)字符,那就是空格。在半角中,空格是32,而在全角中它是12288。

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

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

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)

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

s = "張三,是1個(gè)帥哥。"
result = FullToHalf(s)
print result
print "-" * 80
print s

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

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

當(dāng)然,除了以上的方式外,還有其他的方式將全角轉(zhuǎn)換為半角。比如我隔壁那個(gè)搞python的哥們直接就用正則進(jìn)行匹配然后批量的進(jìn)行轉(zhuǎn)換。
由于我比較懶和能力比較有限,只好通過上面的方式來簡化我的工作量。

參考文章:

http://www.cnblogs.com/kaituo...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38094.html

相關(guān)文章

  • Python轉(zhuǎn)換一些常見全角字符半角

    摘要:前言最近在爬日文小說的過程中,經(jīng)常遇到全角甚至和和半角混用,造成我強(qiáng)迫癥強(qiáng)烈不適,就著手專門寫一個(gè)腳本處理之思路首先在網(wǎng)上尋找看是否已經(jīng)有現(xiàn)成庫腳本能做到,尋找一番之后只找到一些思路文章,這里就不重復(fù)了有一點(diǎn)要注意,不少文章里是的情況,里面 前言 最近在爬日文小說的過程中,經(jīng)常遇到全角(甚至和和半角混用),造成我(強(qiáng)迫癥)強(qiáng)烈不適,就著手專門寫一個(gè)腳本處理之 思路 首先在網(wǎng)上尋找看是否...

    godlong_X 評論0 收藏0
  • java字符全角半角轉(zhuǎn)換

    摘要:序本文展示一下如何將進(jìn)行半角與全角轉(zhuǎn)換。術(shù)語全角進(jìn)制轉(zhuǎn)為進(jìn)制半角進(jìn)制轉(zhuǎn)為進(jìn)制工具類全角空格半角空格全角半角轉(zhuǎn)換間隔驗(yàn)證輸出工具類全角半角字符相互轉(zhuǎn)換 序 本文展示一下如何將char進(jìn)行半角與全角轉(zhuǎn)換。 術(shù)語 全角 SBC case Sexagesimal to Binary Converter 60進(jìn)制轉(zhuǎn)為2進(jìn)制 半角 DBC case Decimal to Binary Con...

    CollinPeng 評論0 收藏0
  • JS基礎(chǔ)篇-- JS對全角半角的驗(yàn)證,相互轉(zhuǎn)化以及介紹

    摘要:全角占兩個(gè)字節(jié)。漢字字符和規(guī)定了全角的英文字符及國標(biāo)中的圖形符號和特殊字符都是全角字符。在全角中,字母和數(shù)字等與漢字一樣占據(jù)著等寬的位置。全角轉(zhuǎn)換為半角 1.什么是全角和半角? 全角:是一種電腦字符,是指一個(gè)全角字符占用兩個(gè)標(biāo)準(zhǔn)字符(或兩個(gè)半角字符)的位置。全角占兩個(gè)字節(jié)。 漢字字符和規(guī)定了全角的英文字符及國標(biāo)GB2312-80中的圖形符號和特殊字符都是全角字符。在全角中,字母和數(shù)字等...

    YancyYe 評論0 收藏0
  • python IDLE的簡明圖示使用說明(適合初學(xué)者)

    摘要:的簡明圖示使用說明是自帶的開發(fā)工具,參見下圖在的提示符后輸入代碼,回車,就可以執(zhí)行此代碼,參見下圖下面演示用的編輯器編寫程序文件并運(yùn)行程序文件將以為擴(kuò)展名。輸出在屏幕上顯示數(shù)據(jù),將數(shù)據(jù)保存至文件等。 python IDLE的簡明圖示使用說明 IDLE 是python自帶的開發(fā)工具,參見下圖...

    caiyongji 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<