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数据类型转换函数总结
Mar 11 Python
对于Python中RawString的理解介绍
Jul 07 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
Django框架安装方法图文详解
Nov 04 Python
python实现身份证实名认证的方法实例
Nov 08 Python
利用python实现AR教程
Nov 20 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
Python递归调用实现数字累加的代码
Feb 25 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
火车头采集器3.0采集图文教程
2007/03/17 PHP
php适配器模式介绍
2012/08/14 PHP
php教程之phpize使用方法
2014/02/12 PHP
php socket通信简单实现
2016/11/18 PHP
php简单中奖算法(实例)
2017/08/15 PHP
PHP耦合设计模式实例分析
2018/08/08 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
重定向实现代码
2006/11/20 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
Python中import机制详解
2017/11/14 Python
基于scrapy的redis安装和配置方法
2018/06/13 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
python 调试冷知识(小结)
2019/11/11 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
大学生毕业自我评价范文分享
2013/11/07 职场文书
公积金转移接收函
2014/01/11 职场文书
2014年企业党支部工作总结
2014/12/04 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
Linux中sftp常用命令整理
2022/06/28 Servers