【Python】unicode与汉字
一、汉字的正则表达式
2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。
4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。【一般我们常用的汉字unicode编码,在这个范围中寻找就可以了】
A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。
AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。
F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。
FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。
正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
二、编码转换
在 Python 中,有 2 种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。
(1)输入:
s = '卧槽' # python3中,汉字默认以unicode编码方式存储,所以在print打印时会将unicode对应的字符输出 print(s)
输出:
卧槽
(2)输入:
uni1=s.encode('utf-8') # 为字符串s编码,即将汉字的unicode转换为utf-8编码(ASCII) print(uni1)
输出:
b'\xe5\x8d\xa7\xe6\xa7\xbd'
(3)输入:
uni11=s.encode('utf-8').decode() # utf-8编码后又解码,得到了汉字的unicode编码,所以print后仍为汉字 print(uni11)
输出:
卧槽
(4)输入:
uni2=s.encode('unicode-escape') # 将汉字的unicodee进行utf-8编码,得到byte类型 print(uni2)
encode(‘unicode-escape’)可将此unicode形式的str类型,转换为bytes类型的二进制数(一般为ASCII码)
输出:
b'\\u5367\\u69fd'
(5)输入:
uni22=s.encode('unicode-escape').decode() # print(uni22)
decode(‘unicode-escape’)可将内容为unicode形式的bytes类型,转换为str类型的unicode
输出:
\u5367\u69fd
(6)输入:
print('\u5367\u69fd') # 直接输入unicode码,print函数自动转换成汉字输出
输出:
卧槽
参考文章:
【Python | encode中的unicode-escape和raw_unicode_escape】https://blog.csdn.net/weixin_45441279/article/details/107065873
【Python encode()和decode()方法:字符串编码转换】http://c.biancheng.net/view/4305.html
【百度百科:正则表达式】https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215
【正则表达式的汉字匹配】https://www.cnblogs.com/yitian/archive/2008/11/14/1333569.html
【汉字 Unicode 编码范围】https://blog.csdn.net/momodosky/article/details/107546956
【Python对中文字符的处理(utf-8/ gbk/ unicode)】https://blog.csdn.net/chixujohnny/article/details/51782826
【python实现中文和unicode转换】https://blog.csdn.net/weixin_43772166/article/details/108042064