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实现给微信公众号发送消息的方法
Jun 30 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
python3图片文件批量重命名处理
Oct 31 Python
python实现飞机大战小游戏
Nov 08 Python
Pandas+Matplotlib 箱式图异常值分析示例
Dec 09 Python
浅谈Tensorflow 动态双向RNN的输出问题
Jan 20 Python
浅析python标准库中的glob
Mar 13 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
python有几个版本
Jun 17 Python
python实现三次密码验证的示例
Apr 29 Python
Django中的JWT身份验证的实现
May 07 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
PHP 八种基本的数据类型小结
2011/06/01 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
DOM事件探秘篇
2017/02/15 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
javascript中的offsetWidth、clientWidth、innerWidth及相关属性方法
2020/05/14 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
pyqt和pyside开发图形化界面
2014/01/22 Python
以windows service方式运行Python程序的方法
2015/06/03 Python
Django之路由层的实现
2019/09/09 Python
python tkinter组件摆放方式详解
2019/09/16 Python
应届生法律求职信
2013/10/22 职场文书
自荐信的格式
2014/03/10 职场文书
电子专业求职信
2014/06/19 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
有关三国演义的读书笔记
2015/06/25 职场文书
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python