您的位置:首页 > 编程语言 > Python开发

python字符串使用总结

2010-03-13 16:24 579 查看



来源:
作者:
灵剑

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'

n =
3

sStr1 +
=
sStr2[
0:
n]

print
sStr1

''
'9.字符串指定长度比较'
''

#strncmp(
sStr1,
sStr2,
n)

sStr1 =
'12345'

sStr2 =
'123bc'

n =
3

print
cmp(
sStr1[
0:
n]
,
sStr2[
0:
n]
)

''
'10.复制指定长度的字符'
''

#strncpy(
sStr1,
sStr2,
n)

sStr1 =
''

sStr2 =
'12345'

n =
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'

n =
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: