python字符串使用总结


来源: 作者: 灵剑
1.python 字符串通常有单引号('...')、双引号(...)、三引号(...)或('''...''')包围,三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,

1.python 字符串通常有单引号('...')、双引号("...")、三引号("""...""")或('''...''')包围,三引号包含的字符串可由多行组 成,一般可表示大段的叙述性字符串。在使用时基本没有差别,但双引号和三引号("""...""")中可以包含单引号,三引号 ('''...''')可以包含双引号,而不需要转义。

 

 
2.用(/)对特殊字符转义,如(/)、(')、(")。

 
3.常用字符串函数
1)str.count() //返回该字符串中某个子串出现的次数
2)str.find()   //返回某个子串出现在该字符串的起始位置
3)str.lower() //将该字符串全部转化为小写
4)str.upper() //转为大写
5)str.split() //分割字符串,返回字串串列表,默认以空格分割
6)len(str)     //返回字符串长度
例如:
>>> str = 'Hello, world'
>>> str.count('o')
>>> 2
>>> str.find('lo')
>>> 3
>>> str.lower()
>>> 'hello, world'
>>> str.upper()
>>> 'HELLO, WORLD'
>>> str.split()
>>> ['Hello,', 'world']
>>> str.split(',')
>>> ['Hello', ' world']
>>> len(str)
>>> 13
>>> str
>>> 'Hello, world'
以上所有操作都不会改变字符串本身!
4.字符串与数字相互转换
import string
string.atoi(str[,base]) //base为可选参数,表示将字符转换成的进制类型
数字转换成字符串可简单了,直接用str()
5.字符与ASCII转换
char->ascii  ord()
   ascii ->char chr()

======================================================================
#Python字符串操作
'' '1.复制字符串' ''
#strcpy( sStr1, sStr2)
sStr1 =  'strcpy'
sStr2 =  sStr1
sStr1 =  'strcpy2'
print  sStr2
'' '2.连接字符串' ''
#strcat( sStr1, sStr2)
sStr1 =  'strcat'
sStr2 =  'append'
sStr1 + =  sStr2
print  sStr1
'' '3.查找字符' ''
#strchr( sStr1, sStr2)
sStr1 =  'strchr'
sStr2 =  'r'
nPos =  sStr1. index( sStr2)
print  nPos
'' '4.比较字符串' ''
#strcmp( sStr1, sStr2)
sStr1 =  'strchr'
sStr2 =  'strch'
print  cmp( sStr1, sStr2)
'' '5.扫描字符串是否包含指定的字符' ''
#strspn( sStr1, sStr2)
sStr1 =  '12345678'
sStr2 =  '456'
#sStr1 and  chars both in  sStr1 and  sStr2
print  len( sStr1 and  sStr2)
'' '6.字符串长度' ''
#strlen( sStr1)
sStr1 =  'strlen'
print  len( sStr1)
'' '7.将字符串中的小写字符转换为大写字符' ''
#strlwr( sStr1)
sStr1 =  'JCstrlwr'
sStr1 =  sStr1. upper( )
print  sStr1
'' '8.追加指定长度的字符串' ''
#strncat( sStr1, sStr2, n)
sStr1 =  '12345'
sStr2 =  'abcdef'
=  3
sStr1 + =  sStr2[ 0: n]
print  sStr1
'' '9.字符串指定长度比较' ''
#strncmp( sStr1, sStr2, n)
sStr1 =  '12345'
sStr2 =  '123bc'
=  3
print  cmp( sStr1[ 0: n] , sStr2[ 0: n] )
'' '10.复制指定长度的字符' ''
#strncpy( sStr1, sStr2, n)
sStr1 =  ''
sStr2 =  '12345'
=  3
sStr1 =  sStr2[ 0: n]
print  sStr1
'' '11.字符串比较,不区分大小写' ''
#stricmp( sStr1, sStr2)
sStr1 =  'abcefg'
sStr2 =  'ABCEFG'
print  cmp( sStr1. upper( ) , sStr2. upper( ) )
'' '12.将字符串前n个字符替换为指定的字符' ''
#strnset( sStr1, ch, n)
sStr1 =  '12345'
ch =  'r'
=  3
sStr1 =  n *  ch +  sStr1[ 3: ]
print  sStr1
'' '13.扫描字符串' ''
#strpbrk( sStr1, sStr2)
sStr1 =  'cekjgdklab'
sStr2 =  'gka'
nPos =  - 1
for  c in  sStr1:
    if  c in  sStr2:
         nPos =  sStr1. index( c)
        break
print  nPos

'' '14.翻转字符串' ''
#strrev( sStr1)
sStr1 =  'abcdefg'
sStr1 =  sStr1[ : : - 1]
print  sStr1
'' '15.查找字符串' ''
#strstr( sStr1, sStr2)
sStr1 =  'abcdefg'
sStr2 =  'cde'
print  sStr1. find( sStr2)
'' '16.分割字符串' ''
#strtok( sStr1, sStr2)
sStr1 =  'ab,cde,fgh,ijk'
sStr2 =  ','
sStr1 =  sStr1[ sStr1. find( sStr2)  +  1: ]
print  sStr1

 

 

 

 

 

首先要搞清楚,字符串在Python内部的表示是unicode编码.

因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

 

decode的作用是将其他编码的字符串转换成unicode编码,

如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。

 

encode的作用是将unicode编码转换成其他编码的字符串,

如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。

 

在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。

 

如在UliPad中运行如下代码:

s=u"中文"

print s

会提示:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。

这是因为UliPad在英文WindowsXP上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。

 

将最后一句改为:print s.encode('gb2312') 则能正确输出“中文”两个字。

 

若最后一句改为:print s.encode('utf8') 则输出:/xe4/xb8/xad/xe6/x96/x87,

这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。

 

另外,代码中字符串的默认编码与代码文件本身的编码一致,

如: s='中文' 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。

 

通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件,在这篇文章中可以看到如何获得系统的默认编码。

 

如果字符串是这样定义: s=u'中文' 则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。

 

因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。

如果一个字符串已经是unicode了,再进行解码则将出错,

 

因此通常要对其编码方式是否为unicode进行判断:

isinstance(s, unicode) #用来判断是否为unicode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值