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 获取本机ip地址的两个方法
Feb 25 Python
纯Python开发的nosql数据库CodernityDB介绍和使用实例
Oct 23 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
Python获取当前页面内所有链接的四种方法对比分析
Aug 19 Python
Python GUI学习之登录系统界面篇
Aug 21 Python
简单了解python 生成器 列表推导式 生成器表达式
Aug 22 Python
Python大数据之使用lxml库解析html网页文件示例
Nov 16 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
Django框架实现在线考试系统的示例代码
Nov 30 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
python Tkinter的简单入门教程
Apr 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
十天学会php之第九天
2006/10/09 PHP
一个查看session内容的函数
2006/10/09 PHP
构建简单的Webmail系统
2006/10/09 PHP
PHP在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
pandas多级分组实现排序的方法
2018/04/20 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
python进程的状态、创建及使用方法详解
2019/12/06 Python
python破解同事的压缩包密码
2020/10/14 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
公司董事长职责
2013/12/12 职场文书
大学生个人自荐信
2014/02/24 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
感恩教师主题班会
2015/08/12 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL