未加星标

Python实现针对含中文字符串的截取功能示例

字体大小 | |
[开发(python) 所属分类 开发(python) | 发布者 店小二03 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

本文实例讲述了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 continuetmp_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 continueelse: len_num +=1; continuebreak
tmp = string[0:len_num]
# print utf2gbk(tmp)
return tmp

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python编码操作技巧总结》、《Python字符串操作技巧汇总》、《Python数组操作技巧总结》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》及《Python数据结构与算法教程》

希望本文所述对大家Python程序设计有所帮助。

本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程

主题: Python算法数据结构数据
分页:12
转载请注明
本文标题:Python实现针对含中文字符串的截取功能示例
本站链接:http://www.codesec.net/view/565016.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(python) | 评论(0) | 阅读(15)