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 相关文章推荐
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
Apr 09 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
Dec 08 Python
python实现文件分组复制到不同目录的例子
Jun 04 Python
Python 自动补全(vim)
Nov 30 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
Apr 20 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
Python实现的简单dns查询功能示例
May 24 Python
python使用tensorflow深度学习识别验证码
Apr 03 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
Python RabbitMQ消息队列实现rpc
May 30 Python
pandas数据集的端到端处理
Feb 18 Python
利用python进行文件操作
Dec 04 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 foreach 参数强制类型转换的问题
2010/12/10 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
菜单效果
2006/10/14 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
在Vue中实现随hash改变响应菜单高亮
2020/03/09 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
详解python eval函数的妙用
2017/11/16 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Python内置方法和属性应用:反射和单例(推荐)
2020/06/19 Python
解决python 执行shell命令无法获取返回值的问题
2020/12/05 Python
Python实现自动整理文件的脚本
2020/12/17 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
高中毕业生自我鉴定
2013/11/03 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
2015年中个人总结范文
2015/03/10 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
科学家研发出新型速效酶,可在 24 小时内降解塑料制品
2022/04/29 数码科技