字符串python language显示第一个字符_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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值