Python实现针对含中文字符串的截取功能示例


Posted in Python onSeptember 22, 2017

本文实例讲述了Python实现针对含中文字符串的截取功能。分享给大家供大家参考,具体如下:

对于含多字节的字符串,进行截断的时候,要判断截断处是几字节字符,不能将多字节从中分割,避免截断后乱码

下面给出utf8和gb18030上的实现, 用任何一种都可以,可以先进行转码,用encode, decode;

方法1:对utf8:

def subString(string,length):
  if length >= len(string):
        return string
  result = ''
  i = 0
  p = 0
  while True:
        ch = ord(string[i])
        #1111110x
        if ch >= 252:
            p = p + 6
        #111110xx
        elif ch >= 248:
            p = p + 5
        #11110xxx
        elif ch >= 240:
            p = p + 4
        #1110xxxx
        elif ch >= 224:
            p = p + 3
        #110xxxxx
        elif ch >= 192:
            p = p + 2
        else:
            p = p + 1
        if p >= length:
            break;
        else:
            i = p
  return string[0:i]

方法2:对gb18030编码

def cut_string_off(string,s_len):
    if len(string)==0 or s_len <=0:
        return string
    elif len(string)==1 or s_len >= len(string):
        return string
    elif s_len < len(string):
        len_num=0
        while len_num < s_len:
            tmp_c=ord(string[len_num])
            if tmp_c >0 and tmp_c <=0x7F:
                len_num+=1
                continue
            tmp_nextc=ord(string[len_num+1])
            if tmp_c >= 0x81 and tmp_c <=0xFE and tmp_nextc>=0x40 and tmp_nextc<=0xFE:
                len_num+=2
                continue
            else:
                len_num +=1;
                continue
            break
        tmp = string[0:len_num]
#    print utf2gbk(tmp)
    return tmp

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python模拟登陆阿里妈妈生成商品推广链接
Apr 03 Python
python使用Queue在多个子进程间交换数据的方法
Apr 18 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
在Python中增加和插入元素的示例
Nov 01 Python
解决PyCharm控制台输出乱码的问题
Jan 16 Python
Python调用百度根据经纬度查询地址的示例代码
Jul 07 Python
Django项目中使用JWT的实现代码
Nov 04 Python
python opencv进行图像拼接
Mar 27 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
python判断一个变量是否已经设置的方法
Aug 13 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 #Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 #Python
Python实现字符串与数组相互转换功能示例
Sep 22 #Python
Python中用post、get方式提交数据的方法示例
Sep 22 #Python
利用python操作SQLite数据库及文件操作详解
Sep 22 #Python
Python正则表达式知识汇总
Sep 22 #Python
python3实现全角和半角字符转换的方法示例
Sep 21 #Python
You might like
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
js实现textarea限制输入字数
2017/02/13 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
jQuery 判断元素整理汇总
2017/02/28 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
在Vue组件化中利用axios处理ajax请求的使用方法
2017/08/25 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
数控专业大学毕业生职业规划范文
2014/02/06 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
语文教师个人工作总结
2015/02/06 职场文书
python基础详解之if循环语句
2021/04/24 Python
Django中session进行权限管理的使用
2021/07/09 Python
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏