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 Web框架Flask中使用新浪SAE云存储实例
Feb 08 Python
利用python爬取散文网的文章实例教程
Jun 18 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
python集合是否可变总结
Jun 20 Python
python实现图片压缩代码实例
Aug 12 Python
如何用Python来理一理红楼梦里的那些关系
Aug 14 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
Feb 11 Python
matplotlib部件之套索Lasso的使用
Feb 24 Python
Python开发工具Pycharm的安装以及使用步骤总结
Jun 24 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
用Flash图形化数据(一)
2006/10/09 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
Javascript Math对象
2009/08/13 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
react.js CMS 删除功能的实现方法
2017/04/17 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
python3中编码获取网页的实例方法
2020/11/16 Python
python 写一个水果忍者游戏
2021/01/13 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
幼儿园教师个人反思
2014/01/30 职场文书
另类冲刺标语
2014/06/24 职场文书
主题党日活动总结
2014/07/08 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Nginx四层负载均衡的配置指南
2021/06/11 Servers
python中tkinter复选框使用操作
2021/11/11 Python