python怎样判断字符串中有多少个中文字符

前言:

这种需求并不常用,python主要用于爬取数据,对于数据有效性问题,应该在输入之前就限制。例如QT输入框能够限制,html输入也能限制。

对于c/c++、mysql等,普通字符占1个字节,中文占2个字节。只需直接求字节数就好。但是python并非如此,python的len计算的长度仅仅是“字符数”的意思。python写到mysql等有字节长度限制的库里就会出问题。

那么如何知道真实字节长度呢?或者说,知道有多少个中文呢?

方法1:正则识别中文法

大部分的中文字符在\u4e00-\u9fa5间。用正则可以识别出这些中文。只需要len一下结果就知道有多少个中文。

实际字节数 = 中文数 + len(原字符串)

但是这有个bug,虽然能获取大部分中文,但一些中文字符或少用字是检测不出来的

方法2:解码

大多数时候,我们并不需要提取中文,仅仅知道真实长度就够了。(例如写入有约束的数据库之类的)

利用encode可以知道解码后uncode文本。但是中文字符长度会变成3!

中文字符个数 = (解码后字符个数 – 字符个数)//2

由于每个中文字符数变成了3,所以。

实际在数据库占字节数 = 原字符数 + 中文个数

后记:

在python中,是几乎没有办法完全匹配出中文字符的。实际作用也不大。python主要用途还是爬虫客户端。读写数据库的事交给c java .net等后端去做为佳。功能与数据与视图分开,才是正确的框架。

转载请注明出处:看飞碟 » python怎样判断字符串中有多少个中文字符

赞 (0) 送糖

评论 0

评论前必须登录!

登陆 注册

可爱的来客!请作者吃颗糖吧

支付宝扫一扫打赏

微信扫一扫打赏

你好,我是Jeson