Python中文字符串截取问题

先来看个例子:

#-*- coding:utf8 -*-
s = u'中文截取'
s.decode('utf8')[0:3].encode('utf8')
# 结果u'中文截取

延伸阅读:

UTF-8中的汉字占用多少字节?
占2个字节的:〇
占3个字节的:基本等同于GBK,含21000多个汉字
占4个字节的:中日韩超大字符集里面的汉字,有5万多个
一个UTF-8数字占1个字节
一个UTF-8英文字母占1个字节

在查找 UTF-8 编码资料时发现,很多的帖子说的 UTF-8 编码里,一个汉字占用3个字节,有的还做了个证明,大概是这样的,创建一个没有BOM的UTF-8编码的文本文件,里面保存了几个汉字,然后查看文件的大小。我觉得这样的证明没有一点说服力,因为 UTF-8 是变长的,1-6个字节,少量的汉字检测是不能说明所有的汉字都是的。

后来我又查看了字符映射表-汉语,找到了正确的答案,少数是汉字每个占用3个字节,多数占用4个字节。

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2015-06-12

Python实现字符串与数组相互转换功能示例

本文实例讲述了Python实现字符串与数组相互转换功能.分享给大家供大家参考,具体如下: 字符串转数组 str = '1,2,3' arr = str.split(',') print a 运行结果: 数组转字符串 #方法1 arr = ['a','b'] str1 = ','.join(arr) print str1 #方法2 arr = [1,2,3] #str = ','.join(str(i) for i in arr)#此处str命名与str函数冲突! str2 = ','.join(

python 截取 取出一部分的字符串方法

下面是split截取获得 >>> str = 'http://manualfile.s3.amazonaws.com/pdf/gti-chis-1-user-9fb-0-7a05a56f0b91.pdf' >>> print str.split() ['http://manualfile.s3.amazonaws.com/pdf/gti-chis-1-user-9fb-0-7a05a56f0b91.pdf'] >>> print str.split('

python 中文字符串的处理实现代码

>>> teststr = '我的eclipse不能正确的解码gbk码!' >>> teststr '\xe6\x88\x91\xe7\x9a\x84eclipse\xe4\xb8\x8d\xe8\x83\xbd\xe6\xad\xa3\xe7\xa1\xae\xe7\x9a\x84\xe8\xa7\xa3\xe7\xa0\x81gbk\xe7\xa0\x81\xef\xbc\x81' >>> tests2 = u'我的eclipse不能正确的解码gb

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

本文实例讲述了Python实现针对含中文字符串的截取功能.分享给大家供大家参考,具体如下: 对于含多字节的字符串,进行截断的时候,要判断截断处是几字节字符,不能将多字节从中分割,避免截断后乱码 下面给出utf8和gb18030上的实现, 用任何一种都可以,可以先进行转码,用encode, decode; 方法1:对utf8: def subString(string,length): if length >= len(string): return string result = '' i =

Python字符串拼接、截取及替换方法总结分析

本文实例讲述了Python字符串拼接.截取及替换方法.分享给大家供大家参考,具体如下: python字符串连接 python字符串连接有几种方法,我开始用的第一个方法效率是最低的,后来看了书以后就用了后面的2种效率高的方法,跟大家分享一下. 先介绍下效率比较低的方法: a = ['a','b','c','d'] content = '' for i in a: content = content + i print content content的结果是:'abcd' 后来我看了书以后,发现书上

Python实现简单截取中文字符串的方法

本文实例讲述了Python实现简单截取中文字符串的方法.分享给大家供大家参考.具体如下: web应用难免会截取字符串的需求,Python中截取英文很容易: >>> s = 'abce' >>> s[0:3] 'abc' 但是截取utf-8的中文机会截取一半导致一些不是乱码的乱码.其实utf8截取很简单,这里记下来作为备忘 #-*- coding:utf8 -*- s = u'中文截取' s.decode('utf8')[0:3].encode('utf8') # 结果u

Python使用中文正则表达式匹配指定中文字符串的方法示例

本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

Python实现字符串格式化输出的方法详解

本文实例讲述了Python实现字符串格式化输出的方法.分享给大家供大家参考,具体如下: python属于强类型的语言,如果像java一样操作字符串和数字的"+"时,会出现TypeError.而python的格式化方法有多种,比如使用占位符,使用format,或者是自定义模版等等.这里介绍了其中的几种方法 下面这个例子很好的说明了python属于强类型语言: print "abc" + 123 Traceback (most recent call last): Fi

Python字符串格式化的方法(两种)

本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下 用于字符串的拼接,性能更优. 字符串格式化有两种方式:百分号方式.format方式. 百分号方式比较老,而format方式是比较先进的,企图替代古老的方式,目前两者共存. 1.百分号方式 格式:%[(name)][flags][width].[precision]typecode (name)    可选,用于选择指定的key flags        可选,可供选择的值有: + 右对齐:正数的加正号,负数的加负号 - 左

Python 字符串操作实现代码(截取/替换/查找/分割)

Python 截取字符串使用 变量[头下标:尾下标],就可以截取相应的字符串,其中下标是从0开始算起,可以是正数或负数,下标可以为空表示取到头或尾. 复制代码 代码如下: # 例1:字符串截取str = '12345678'print str[0:1]>> 1   # 输出str位置0开始到位置1以前的字符print str[1:6]  >> 23456   # 输出str位置1开始到位置6以前的字符num = 18str = '0000' + str(num) # 合并字符串pr

Asp.net 字符串操作基类(安全,替换,分解等)

/********************************************************************************** * * 功能说明:常用函数基类 * 作者: 刘功勋; * 版本:V0.1(C#2.0);时间:2006-8-13 * * *******************************************************************************/ /***********************

Python FTP操作类代码分享

复制代码 代码如下: #!/usr/bin/py2# -*- coding: utf-8 -*-#encoding=utf-8 '''''    ftp自动下载.自动上传脚本,可以递归目录操作''' from ftplib import FTPimport os, sys, string, datetime, timeimport socket class FtpClient: def __init__(self, host, user, passwd, remotedir, port=21):

Python 文件操作实现代码

open(filename,mode,buffer) 其中第一个参数是要打开的文件的文件名,必选:第二个是打开方式,可选:第三个为缓冲区,可选.默认情况下是以"读"模式打开文件.该函数返回的是流类型对象. mode有如下几种: r:读模式(默认值) w:写模式 a:追加写模式 b:二进制模式 t:文本模式(默认值) +:更新已有硬盘文件(读和写模式) U:通用换行模式(Universal new line mode) 如果到打开的文件不存在或者其他问题,会跑出IOError异常. 常用

python 布尔操作实现代码

和别的语言布尔类型定义1为真,0为假不同,python定义的真假比较多. 先说下假吧: false,none,0,"",{},[],() 而真的话,只要和上面的相反就行,比如上面是false,那真为true,[]空列表为假,不为空的列表为真.明白了这些.我们就可以用到python判断语句 如果你要把别的类型转换为bool类型的话,可以通过内置方法bool方法来进行转换.

Python list操作用法总结

本文实例讲述了Python list操作用法.分享给大家供大家参考,具体如下: List是python中的基本数据结构之一,和Java中的ArrayList有些类似,支持动态的元素的增加.list还支持不同类型的元素在一个列表中,List is an Object. 最基本的创建一个列表的方法 复制代码 代码如下: myList = ['a','b','c'] Python list常见操作如下: 创建列表 复制代码 代码如下: sample_list = ['a',1,('a','b')] P

Python基于正则表达式实现文件内容替换的方法

本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而SAE的thinkphp文件结构和本地测试的有出入,需要把一些html和js的引用路径改成SAE的形式,为了不手工改,特地速成了一下Python的正则表达式和文件操作.主要要求是将某目录下的html和js里面的几个路径变量分别更改成相应的形式,匹配文件名的时候用了正则 import os import re #all file in the dir

Python只用40行代码编写的计算器实例

本文实例讲述了Python只用40行代码编写的计算器.分享给大家供大家参考,具体如下: 效果图: 代码: from tkinter import * reset=True def buttonCallBack(event): global label global reset num=event.widget['text'] if num=='C': label['text']="0" return if num in "=": label['text']=str(

Python元组操作实例分析【创建、赋值、更新、删除等】

本文实例讲述了Python元组操作.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 元组是跟列表非常相近的另一种容器类型. 元组是一种不可变类型,一旦创建不可以修改其中元素. 由于这种特性,元组能做一个字典的key. 当处理一组对象时,这个组默认是元组类型. ''' '''''创建元组并赋值''' #创建并对一个元组赋值 tuple_1=(1,2,3,"ewang","demo") #创建一个空的元组 tuple_2=() #使用tuple创