一、字符串简介
在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'
领取专属 10元无门槛券
私享最新 技术干货