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友情链接检查方法
Jul 08 Python
python字典基本操作实例分析
Jul 11 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Python实现合并两个列表的方法分析
May 28 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
详解Python time库的使用
Oct 10 Python
django框架forms组件用法实例详解
Dec 10 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
python下载卫星云图合成gif的方法示例
Feb 18 Python
python实现简单的tcp 文件下载
Sep 16 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 strtr() 函数使用说明
2008/11/21 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
javascript 获取表单file全路径
2009/12/31 Javascript
js数组Array sort方法使用深入分析
2013/02/21 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
javascript中sort()的用法实例分析
2015/01/30 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
python str与repr的区别
2013/03/23 Python
python实现倒计时的示例
2014/02/14 Python
python中__call__方法示例分析
2014/10/11 Python
简单介绍Python中的RSS处理
2015/04/13 Python
带你了解python装饰器
2017/06/15 Python
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
Under Armour瑞典官方网站:美国高端运动科技品牌
2018/11/21 全球购物
C面试题
2015/10/08 面试题
教师职称自我鉴定
2014/02/12 职场文书
新闻编辑求职信
2014/07/13 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
机械机修工岗位职责
2014/08/03 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
导游词之湖州-太湖
2019/10/11 职场文书