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