四、Python的类型与运算-字符串(上)

一、字符串简介

在Python里字符串是一个有序的字符的集合,用来存储和表现基于文本的信息。字符串可以用来表示能够像文本那样编辑的任何信息:符号和词语、在入道内存中的文本的内容、Internet网址和Python程序等。

在Python里字符串被划分为不可变序列这一类别,这意味着这些字符串所包含的字符存在从左至右的位置顺序,并且他们不可以在远处修改。字符串在Python里属于一个序列类型的对象类别,在后面介绍的列表,元组都是序列类型。在这章对文本的操作,很多都能应用于序列类型的对象类别。

二、字符串常量

在Python里有很多种方法来表示字符串:

• 单引号:’Text”1”‘

• 双引号:”Text’1’”

• 三引号:’’’…Lines…’’’,”””…Lines…”””.

• 转义字符:”Line1\tadded tab\nLine2”

• Raw字符串:r”C:\My\new\Directory\file.exe”

• Python 3.x中的Byte字符串:b’Te\x01xt’

• Python 2.x中的Unicode字符串:u’my\u0020text’

在Python 3.x里默认是使用Unicode方式存储字符串,在Python 2.x里默认是使用Latin-1方式存储字符串,因此不能直接识别中文。

# -*- encoding=utf8 -*-

在Python2.x脚本文件加上上面一句话就能正常使用中文。

1、转义

跟其他开发语言相通,Python也有转义字符:(反斜杠)

当我们在一个字符串里需要同时使用单引号(‘)和双引号(“)的时候,根据我们所使用的表示字符串的引号类型进行转义。

>>>'a"b\'c'

在这里,我们要输入的字符串为a”b’c。

因为我们使用单引号来表示字符串的开始和结尾,所以b后面的单引号需要转义。当我们使用双引号来表示字符串,我们需要在双引号前面使用反斜杠进行转义:

>>>s ="a\"b'c"

除了这两个,我们还有很多反斜杠加上单个字符来进行转义的。

\newline:忽视新行(连续)#newline就是按键盘上的enter(或return)

\ :反斜杠,因为反斜杠本身就是转义字符,所以两个反斜杠才能表示一个。

\’ :单引号

\”:双引号

\a:响铃

\b:倒退(一位)

\f:换页(下一页,同一列。特定终端下可用。)

\n:新行(换行)

\r :返回(返回到开始)

\t :水平制表符

\v :垂直制表符

\uhhhh:Unicode 16位的十六进制值

\Uhhhhhhhh:Unicode 32位的十六进制值

\xhh:十六进制值

\ooo:八进制值

\0:Null(不是字符串结尾)

\other:不转义

转义测试:

2、raw印制转义

在Python里我们有的时候是需要印制转义的。比如,当有个Windows的目录如下:

>>>print('C:\newfile\files')C:ewfileiles

这个时候,要是按正常来说,\n和\f都会被转移,但我们写双斜杠又麻烦,这个时候可以使用raw字符串来印制转义。

>>>print(r'C:\newfile\files')C:\newfile\files

这个时候其值会跟写的完全一样,当然,我们也可以写成如下:

>>>print('C:\\newfile\\files')C:\newfile\files

但是还是没有使用印制转义方便,特别是在路径很长的时候。

三、字符串操作

1、len()

在Python里有很多函数,可以对字符串进行操作:len()是看字符串长度的。

>>>print(len('小小哆啦'))

4

当我们使用unicode的时候,按中文字符的个数显示,但使用python2.x里的默认

字符编码,就会是三倍的数值。

因为Python3开始,默认字符编码是unicode,所以在Python3.x里是没有问题的。

2、合并字符串

字符串合并,重复等,跟数字的操作类似:

>>>'Dora'+'Emon'

'DoraEmon'

>>>'Dora'*7

'DoraDoraDoraDoraDoraDoraDora'

这里的第二个操作可以为我们节省很多字符输入,比如我们需要输入如下:

>>>print('-----……-----')#80个“-”

-----……-----

这个可以使用如下方法简单实现:

>>>print('-'*80)-----……-----

当需要字符合并的时候,如下方法也可以,但不建议使用。

>>>'Dora''Emon'

'DoraEmon'

>>>'Dora''Emon'

'DoraEmon'

3、顺序提取字符

当我们需要对每个字符串进行操作的时候,可以如下进行操作:

>>>forDaXiongin'DoraEmon':

...print(DaXiong,end=' ')...D o r a E m o n

这个意思是,我们从a字符串(序列)里按顺序提取字符,进行操作。关于循环,后面在函数章节讲解。

4、判断存在字符

我们需要知道某个字符是否在一个字符串的时候,可以使用in或者not in来判断:

>>>'D'in'DoraEmon'

True

>>>'D'notin'DoraEmon'

False

>>>'X'in'DoraEmon'

False

5、字符串分片

我们也可以对字符串分片,比如对DoraEmon,我们只需要第一个字符,第三个字符,或者中间两个字符,后两个字符等等。

>>>Dora='DoraEmon'

>>>Dora[1],Dora[5],Dora[-3]('o','m','m')

>>>Dora[1:5]

'oraE'

>>>Dora[-5:-1]

'aEmo'

>>>Dora[3:]

'aEmon'

>>>Dora[:-5]

'Dor'

>>>Dora[:]

'DoraEmon'

看一下在Python里对字符串的分段是如何进行的,例如:text=“ThisIsTestText”

提取单个字母时,需使用字母前的数字。比如:h,就是1或者-13,提取范围时是开始字母的前面的数字到最后字母的后面数字。比如h到x,就是[1,13]或者[-13,13]或者[1,-1]或者[-13,-1],从开始到某个字母就可以[:3];从某个字幕到结尾就是[3:]。

分片操作还可以有第三个参数,间隔。我们要第一个字母开始,每隔一个字母显示,结果应该是“DrEo”

>>>Dora='DoraEmon'

>>>Dora[::2]

'DrEo'

或者从第二个字母开始:

>>>Dora[1::2]

'oamn'

或者我们要倒过来:

>>>Dora[::-1]

'nomEaroD'

>>>Dora[-1:1:-1]

'nomEar'

6、字符串转换

当我们需要对字符串大小写等操作的时候,需要对字符串转换成相应的代码。这个时候我们就需要两个函数:ord和chr,ord是把一个字符转换成数字,chr是把数字转换成单个字符。

>>>ord('D')

68

>>>chr(68)

'D'

>>>ord('小')

23567

>>>chr(23567)

'小'

注:在Python3.x里可以直接使用中文字符,但是在Python2.x就不能直接用了。

用这两个函数,可以对字符串转换进行简单的大小写操作了,比如:把一个字符串里的内容全转换成大些:

>>>DORA=''#初始化DORA

>>>Dora='DoraEmon'#设置Dora

>>>forDaXionginDora:#循环,按顺序提取Dora字符串内容

...DaXiong_code=ord(DaXiong)#字符转换成ascII码

...if97

...DORA+=chr(DaXiong_code-32)#在值的基础上减32(大小写之间的差距)

...else:...DORA+=DaXiong#其余情况不变

...

>>>DORA

'DORAEMON'

7、字符串序列

在Python里字符串算是序列,但是字符串是不可修改的对象,所以如下操作不能正常被执行:

>>>Dora='DoraEmon'

>>>Dora[3]='DaXiong'

Traceback (most recent call last): File"", line1,inTypeError:'str'object doesnotsupport item assignment

但是我们可以重新给原来的变量赋值:

>>>Dora='DaXiong'+Dora[3:]

>>>Dora

'DaXiongEmon'

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190118B12T5000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券