在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ python 如何判斷字符串中是否包含亂碼

python 如何判斷字符串中是否包含亂碼

python 如何判斷是否有中文亂碼。
類似:
楀鉤鏃惰鐪熷涔?fàn)锢佸埢鑻﹂捜潬旀?湳錛屾墡瀹炲伐浣滐纴瑙勮寖綆$悊銆備漢鎬寲鐨勭鐞嗗嚌镵氫簡(jiǎn)涓?鎵規(guī)妧鏈騫詫纴寰楀埌浜?jiǎn)鍏ㄥ厪稿憳宸ョ殑淇¤禆?鍛樺伐100%鍙傚姞鍖諱繚錛?5钖嶅憳宸弬鍔犲煄淇濓纴澶栨潵鍛樺伐鎻愪緵椋熷錛屾椂鏃跺埢鍒諱互鍏變駭鍏氬憳鐨勬爣鍑嗚 閲忚嚜宸憋纴鍦濂戒紒涓氱殑钖屾椂錛屼負(fù)紺句細(xì)浜嬩笟鎹愯祫鍔10涓囧厓錛屾崘璧犺傳鍥板憳宸灞炴不鐥?涓囧厓錛屽府鍔傳鍥板鐢?.6涓囧厓錛屾崘璧犳枃鏋椾腑瀛紳鏈鴻澶?涓囧厓錛屾厛锽勬崘鐚?涓囧厓銆?/p> 鍛拰鍏村悓蹇楀浜嬩笟鎵憲榪芥眰錛屽湪榪欏崄鍑犲勾浼佷笟鍙戝睍榪囩涓纴鍏呭垎鍙戞尌浜?jiǎn)涓€涓叡浜厷鍛樼殑鍏堥攱妯寖甯浣滅敤錛屽彈鍒頒簡(jiǎn)闀囨斂搴溿?甯?jìng)珩斾溉濋冭痃殑桢綆屠伣C句細(xì)钖勭晫鐨勪竴鑷村璇勶纴浠栧潥淇彧鏈変笉鏂彂灞曪

回答
編輯回答
夢(mèng)囈

將它unicode編碼后,再轉(zhuǎn)gb2312,如果報(bào)錯(cuò)就說明存在生僻字。詳情參考https://jingsam.github.io/201...

2018年5月25日 01:17
編輯回答
你好胸

采用分詞的方法也不錯(cuò), 亂碼是不太可能成詞的(但有生僻字不一定是亂碼).
參考我下面的代碼:

# encoding=utf-8
import jieba

def new_len(iterable):
    try:
      return iterable.__len__()
    except AttributeError:
      return sum(1 for _ in iterable)


normal_str="我來到北京清華大學(xué)"
normal_len=len(normal_str)
seg_list = jieba.cut(normal_str)

res = "正常文本:"+str(normal_len / new_len(seg_list))

print(res)

luanma_str = "楀鉤鏃惰鐪熷涔?fàn)锢佸埢鑻﹂捜潬旀?湳錛屾墡瀹炲伐浣滐纴瑙勮寖綆$悊銆備漢鎬寲鐨勭鐞嗗嚌镵氫簡(jiǎn)涓?鎵規(guī)妧鏈騫詫纴寰楀埌浜?jiǎn)鍏ㄥ厪稿憳宸ョ殑淇¤禆?鍛樺伐100%鍙傚姞鍖諱繚錛?5钖嶅憳宸弬鍔犲煄淇濓纴澶栨潵鍛樺伐鎻愪緵椋熷錛屾椂鏃跺埢鍒諱互鍏變駭鍏氬憳鐨勬爣鍑嗚 閲忚嚜宸憋纴鍦濂戒紒涓氱殑钖屾椂錛屼負(fù)紺句細(xì)浜嬩笟鎹愯祫鍔10涓囧厓錛屾崘璧犺傳鍥板憳宸灞炴不鐥?涓囧厓錛屽府鍔傳鍥板鐢?.6涓囧厓錛屾崘璧犳枃鏋椾腑瀛紳鏈鴻澶?涓囧厓錛屾厛锽勬崘鐚?涓囧厓銆?/p> 鍛拰鍏村悓蹇楀浜嬩笟鎵憲榪芥眰錛屽湪榪欏崄鍑犲勾浼佷笟鍙戝睍榪囩涓纴鍏呭垎鍙戞尌浜?jiǎn)涓€涓叡浜厷鍛樼殑鍏堥攱妯寖甯浣滅敤錛屽彈鍒頒簡(jiǎn)闀囨斂搴溿?甯?jìng)珩斾溉濋冭痃殑桢綆屠伣C句細(xì)钖勭晫鐨勪竴鑷村璇勶纴浠栧潥淇彧鏈変笉鏂彂灞曪"
luanma_len = len(luanma_str)
luanma = jieba.cut(luanma_str)


res = "亂碼:"+str(luanma_len / new_len(luanma))
print(res)

輸出結(jié)果

正常文本:2.25
亂碼:1.0590062111801242

正常結(jié)果一般在2以上, 亂碼非常接近1, 可以認(rèn)為1.2以下就一定是亂碼了.
也可轉(zhuǎn)成概率公式.
設(shè)為1時(shí)概率為0.9, 2時(shí)概率為0.1,可得下面的公式
$$ P = {1 \over 1 + \exp{(4.395*x-6.594)}} $$

式中:
x--為字符串長(zhǎng)度與分詞數(shù)組長(zhǎng)度的比值
P--為概率.

這個(gè)方法引入了結(jié)巴分詞模塊
需要提前安裝

pip3 install jieba

參見:
https://github.com/fxsjy/jieba

2018年2月22日 02:21