判断一个字符串是否含有中文的方法

运行环境: python 3.6.0

关于如何判断一个字符串是否含有中文这个问题,那么一定得知道什么是编码,计算机不会直接告诉你什么是中文,什么不是中文的,计算机只认识二进制,一切的字符在计算机中都是以二进制的形式进行存储,计算机同时也只能运行二进制。

我们平时在计算机中所见到的所有字符都是以ascii码表的形式存储的,然后对应的 adcii 以相应的方式转存为二进制,但是在 ascii 码表中并存不下中文,因为中文实在是太多了,但是中国人聪明啊,两个8位组合起来来存储中文就够了么,然后就有了unicode码。

解题思路: 我们可以首先可以获取中文的unicode码范围,然后用正则表达式判断一个字符串内是否含有中文了

unicode 码表: https://www.qqxiuzi.cn/zh/hanzi-unicode-bianma.php

从 unicode 码表我们知道 unicode编码的范围是 4E00-9FA5

代码如下:

# -*- coding: utf-8 -*-
 
import re
 
zh_pattern = re.compile('[\u4e00-\u9fa5]+')
 
def chinese_detection(string_word):
    """
    判断传入字符串,判断是否包含中文
    :param string_word: 传入的要检测的是否含有中文的字符串
    :return: True or False
    """
    if re.search(pattern=zh_pattern, string=string_word):
        return True
    else:
        return False
 
 
def main():
    """
    主函数
    :return: None
    """
    while True:
        string_word = input('please input a string: ')
        if string_word == "0000":
            print("########## EXIT ##########")
            exit()
        else:
            result = chinese_detection(string_word=string_word)
            print(string_word)
            if result:
                print('''this string has chinese''')
            else:
                print("""this string don't have chinese""")
        print()
 
 
if __name__ == '__main__':
    main()

运行结果示例: