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 json模块使用实例
Apr 11 Python
python中list常用操作实例详解
Jun 03 Python
Python中对象的引用与复制代码示例
Dec 04 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
Python安装selenium包详细过程
Jul 23 Python
Django--权限Permissions的例子
Aug 28 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
python matplotlib拟合直线的实现
Nov 19 Python
基于Python实现扑克牌面试题
Dec 11 Python
Python底层封装实现方法详解
Jan 22 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
Python 图片添加美颜效果
Apr 28 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 正则表达式的学习探讨
2013/06/06 PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
Jquery和Js获得元素标签名称的方法总结
2016/10/08 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python list操作用法总结
2015/11/10 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
Python 忽略warning的输出方法
2018/10/18 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
python 解决函数返回return的问题
2020/12/05 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
学生爱国演讲稿
2014/01/14 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
灰雀教学反思
2014/04/28 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
企业百日安全活动总结
2015/05/07 职场文书
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android