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中使用装饰器时需要注意的一些问题
May 11 Python
Python实现完整的事务操作示例
Jun 20 Python
django项目搭建与Session使用详解
Oct 10 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
深入浅析python3中的unicode和bytes问题
Jul 03 Python
pytorch:torch.mm()和torch.matmul()的使用
Dec 27 Python
如何把外网python虚拟环境迁移到内网
May 18 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
Dec 31 Python
Django中的DateTimeField和DateField实现
Feb 24 Python
Python中的变量与常量
Nov 11 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
php简单数据库操作类的封装
2017/06/08 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
jquery实现简单自动轮播图效果
2020/07/29 jQuery
jQuery中event.target和this的区别详解
2020/08/13 jQuery
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
如何用Python合并lmdb文件
2018/07/02 Python
python使用tornado实现简单爬虫
2018/07/28 Python
python腾讯语音合成实现过程解析
2019/08/01 Python
Python如何用filter函数筛选数据
2020/03/05 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
代码中finally中的代码会不会执行
2012/02/06 面试题
工厂门卫岗位职责
2013/11/25 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
公司经理任命书
2014/06/05 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
经典导游欢迎词
2015/01/26 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js