第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

高手接招! 小應(yīng)用 用python3判斷一個(gè)字符串是不是中文組成的

高手接招! 小應(yīng)用 用python3判斷一個(gè)字符串是不是中文組成的

qq_遁去的一_1 2019-02-20 14:49:08
由于業(yè)務(wù)需求,需要寫(xiě)一個(gè)小程序,來(lái)判斷一個(gè)字符串中是不是純中文字符 ( 一個(gè)字符串中不能包含符號(hào),英文 )比如 a = "你好" 這個(gè)就是一個(gè)純中文 再比如 a = "</p>你好" 這個(gè)就不行~ 那么需要如何優(yōu)雅的來(lái)實(shí)現(xiàn)?
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

在python3中,str默認(rèn)是unicode編碼

用 ord() 函數(shù)判斷單個(gè)字符的unicode編碼是否大于255即可。


一般來(lái)說(shuō),中文常用字的范圍是:[\u4e00-\u9fa5]

準(zhǔn)確點(diǎn)判斷中文字符,可以這樣比較:

>>> X,Y = ['\u4e00','\u9fa5']
>>> X<='阿'<=Y
True

例子:

>>> a = "你好";b = "</p>你好"
>>> def isAllZh(s):
    for c in s:
        if not('\u4e00' <= c <= '\u9fa5'):
            return False
    return True

>>> isAllZh(a)
True
>>> isAllZh(b)
False

#或者用 all()
>>> all(map(lambda c:'\u4e00' <= c <= '\u9fa5',a))
True
>>> all(map(lambda c:'\u4e00' <= c <= '\u9fa5',b))
False

既然 @依云 提出了編碼范圍的問(wèn)題,就再補(bǔ)充一些~

詳細(xì)的unicode分區(qū)信息可以參考這里:中日韓統(tǒng)一表意文字

樓主是問(wèn) 判斷中文的算法;很簡(jiǎn)單,就是比較字符編碼的大小,落在cjk文字范圍內(nèi),就是中文。
出了[\u4e00-\u9fa5]范圍的漢字,多數(shù)是生僻字、異體字;如果很在意的話,可以參照下表,多加幾個(gè)判斷條件即可。
中文在unicode里的分區(qū)碼段:

1、中日韓擴(kuò)展部首[2E80-2EFF](116字)
2、康熙字典部首[2F00-2FDF](214字)
3、表意文字描述字符[2FF0-2FFF](12字)
4、中日韓筆畫(huà)[31C0-31EF](37字)
5、中日韓統(tǒng)一表意文字?jǐn)U展A區(qū)[3400-4DBF](6582字)
6、中日韓統(tǒng)一表意文字[4E00-9FFF](20940字)
7、私用區(qū)[E000-F8FF](896字)
8、中日韓兼容表意文字[F900-FAFF](471字)
9、中日韓統(tǒng)一表意文字?jǐn)U展B區(qū)[20000-2A6DF](42711字)
10、中日韓統(tǒng)一表意文字?jǐn)U展C區(qū)[2A700-2B73F](4149字)
11、中日韓統(tǒng)一表意文字?jǐn)U展D區(qū)[2B740-2B81F](222字)
12、中日韓統(tǒng)一表意文字增補(bǔ)集[2F800-2FA1F](542字)
13、增補(bǔ)私用A區(qū)[F0000-FFFFF](73字)
查看完整回答
反對(duì) 回復(fù) 2019-03-04
?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

簡(jiǎn)單啦,你用正則匹配一下英文,標(biāo)點(diǎn),數(shù)字不就可以了么?

查看完整回答
反對(duì) 回復(fù) 2019-03-04
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

regex

>>> import regex
>>> zh = regex.compile(r'^\p{Han}*$')
>>> zh.match('你好')
<regex.Match object; span=(0, 2), match='你好'>
>>> zh.match('<p>好')
>>>

只能保證是漢字,不能保證是中文,也可能是日文。

查看完整回答
反對(duì) 回復(fù) 2019-03-04
  • 3 回答
  • 0 關(guān)注
  • 737 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)