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的@property装饰器的用法
Apr 28 Python
Python中__new__与__init__方法的区别详解
May 04 Python
Python判断中文字符串是否相等的实例
Jul 06 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
python字典一键多值实例代码分享
Jun 14 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
Jan 21 Python
python super函数使用方法详解
Feb 14 Python
python实现马丁策略回测3000只股票的实例代码
Jan 22 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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 数字左侧自动补0
2008/03/31 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
PHP二维数组矩形转置实例
2016/07/20 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
PHP PDOStatement::fetchAll讲解
2019/01/31 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
React-native桥接Android原生开发详解
2018/01/17 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Python深入学习之闭包
2014/08/31 Python
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
python中异常捕获方法详解
2017/03/03 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
python中(str,list,tuple)基础知识汇总
2018/02/20 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
css3 响应式媒体查询的示例代码
2019/09/25 HTML / CSS
主管职责范文
2013/11/09 职场文书
工程测量与监理专业应届生求职信
2013/11/27 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
2014年销售工作总结
2014/12/01 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
孔子观后感
2015/06/08 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python