Python字符串及操作(一)
此片文章总结涉及到字符串的引入、使用、索引选取、连接重复以及成员判断
字符串(string)
字符串是以单引号' '或者双引号“ “括起来的任意文本。
由于我是新手,只是进行所学内容的总结,所以字符串编码这一块还不是特别的熟练,可以参考廖雪峰。
字符串用单引号' ':
>>> name='Max'
>>> name
'Max'
>>> smart='你聪明么' #可以输入中文,但是要记住不能在中文状态下输入引号
>>> smart
'你聪明么'
>>> Me='I am Max'
>>> print(Me) #当使用print()打印,输出的文本不带单引号,输出的文本包含空格等
I am Max
使用单引号,则在输入的文本中不能在出现单引号,如果要用单引号,可以使用==转义符\== 进行转化
>>> b='I\'m Max, my name\'s Max'
>>> print(b) #当使用print()打印,输出的文本不带双引号
I'm Max, my name's Max
字符串用双引号'" ",使用双引号的同时还可以使用单引号:
>>> name="Max"
>>> name
'Max'
>>> Introduce="I'm Max"
>>> print(Introduce) #当使用print()打印,输出的文本不带双引号
I'm Max
字符串可以使用三引号,把文本完全输出
>>> sample='''I am Max,
I want to show you some "sample", could I'''
>>> sample #原文由换行,所以在此处会有一个\n换行符
'I am Max,\nI want to show you some "sample", could I'
>>> print(sample) #使用print(),则会原文输出。
I am Max,
I want to show you some "sample", could I
同样可以输出中文
>>> Matchgirl="""我是一个卖女孩的
火柴,
我今天快要被“冻死”了,因为没有了“燃料”,而且女孩都
回家了"""
>>> Matchgirl
'我是一个卖女孩的\n火柴,\n我今天快要被“冻死”了,因为没有了“燃料”,而且女孩都\n回家了'
>>> print(Matchgirl)
我是一个卖女孩的
火柴,
我今天快要被“冻死”了,因为没有了“燃料”,而且女孩都
回家了
>>>
常用的转义字符
如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用 ==r' ‘(原始字符串)== 表示''内部的字符串默认不转义,原样输出。
>>> print('\\\n\\')#使用了三个转义
\
\
>>> print('\\\t\\') #使用了\t tab四个键
\ \
>>> print(r'\\\t\\') #不转义,原样输出
\\\t\\
转义字符
结果
(在行尾时)
续行符
| 反斜杠符号
'
单引号
"
双引号
\a
响铃
\b
退格(Backspace)
\e
转义
\000
空
\n
换行
\v
纵向制表符
\t
横向制表符
\r
回车
\f
换页
\oyy
八进制数,yy代表的字符,例如:\o12代表换行
\xyy
十六进制数,yy代表的字符,例如:\x0a代表换行
\other
其它的字符以普通格式输出
字符串的操作
字符串可以进行不同的操作,这篇总结文章先涉及到比如查找,选取、连接,重复,成员查询等操作,
查找、选取
索引(index)-- obj[ i ]
对于每一个字符串中的字符都有一个位置索引,而且是从0开始,也就是说0指的是第1个,1指的是第2个,这种在IP地址、列表、集合、元组等中都是如此定义.
每一个字符的索引值,空格也是一个字符. 索引采取 :
>>> Me='I am Max'
>>> Me[0] #返回字符串的第一个字符
'I'
>>> Me[2] #返回字符传的第三个字符
'a'
>>> Me[4] #在字符串中,空格也是表示一个字符,所以此处返回空的字符
' '
>>> Me[9] #该字符串最大索引为7,9超出范围,出现IndexError.
Traceback (most recent call last):
File "", line 1, in
Me[9]
IndexError: string index out of range
字符串可以从左到右索引,可以使用负数值索引,最后一个索引值为-1,从左到右的负数依次增加1.
在这里插入图片描述
>>> ST='卖女孩的小火柴'
>>> ST[1]
'女'
>>> ST[-6] #可以发现同一个字符可以有不同的索引取值方法
'女'
>>> ST[4]
'小'
>>> ST[-3]
'小'
选取字符串一部分 -- [:]
命令代码为 ==string[m:n]== ,这里的m和n表示索引值(可以取正,也可以取负,与上面的索引相同),表示从索引m(第m+1个字符)开始,到索引n-1(第n个字符)结束。如果m省略,则表示从第一个字符开始,如果n省略,则表示取到最后一个字符,如果m和n都忽略,则表示取全部。
==此处需注意:索引m和索引n的位置关系,必须是前到后,否则输出为空==
>>> more='The smart Max is a international teacher'
>>> print(more)
The smart Max is a international teacher
>>> more[1:10] #从索引1(第2个字符)开始到索引9(第10个字符)的取值(共9个),不包括索引10,是左闭右开
'he smart '
>>> more[:9] #冒号:前没有值,则从索引0即第一个开始,到索引8(第9个字符)结束(共9个)。
'The smart'
>>> more[4:15] #从索引4(第五个字符)开始,到索引14(第十五个字符)结束。
'smart Max i'
>>> more[4:-1] #-1代表最后一个字符,所以从索引4(第5个字符)开始,索引-2(倒数第2个字符)结束
'smart Max is a international teache'
>>> more[:] #不加数字,只有一个冒号,则取全部字符,即整个字符串
'The smart Max is a international teacher'
>>> more[-7:] #从索引-7到最后一个结束
'teacher'
>>> more[-13:-4]
'ional tea'
>>> more[-17:19] #因为-17索引的位置在索引19的位置后面,不能从后往前选取
''
>>> print(more[-7:]) #打印输出无单引号
teacher
>>> print(more[:-1]) #从第一个开始,倒数第2个结束。
The smart Max is a international teache
同样可以每隔 i 个字符选取。
命令:==string[ m:n:i ]==,其中 i 为正数的情况下,表示相隔 i个取字符, 如果i不输入值,则表示默认为1.==此处索引的位置m在前,n在后==
>>> more[1:10:2]
'h mr '
>>> print(more[3:15:4])
ra
>>> print(more[2:16:2])
esatMxi
可以选择部分字符串并且逆序输出。
命令:==string[ m:n:i ]==其中的 i 为负值则可以逆序输出,但是==索引m的位置必须在索引n的位置之后。==
>>> a='abcdefghijklmnopqrst'
>>> a[10:2:2] #i为2,则为空
''
>>> a[18:8:-2] #从索引18到索引8,逆序每隔两个选择字符
'sqomk'
>>> a[-2:-10:-2] #-2>-10
'sqom'
>>> a[-3:10:-2] #索引-3的位置在索引10的位置之后,-2表示每隔两个逆序选取
'rpnl'
>>> a[::-1] #表示把整个字符串逆序输出
'tsrqponmlkjihgfedcba'
反查索引index
使用命令:string.index(str)
>>> alphabet='abcdefghijklmnopqrstuvwxyz'
>>> alphabet.index('f') #查询f的索引
5
>>> alphabet.index('o') #查询o的索引
14
如果想查询一个子字符串的索引,则使用 ==string.find(str)==返回值为str第一个字符的索引位置。string.rfind(str)从右边开始查找,根据字符串的位置决定使用,可以缩短时间。
>>> Time.find('15') #返回1所在的索引
11
>>> alphabet.find('opqr') #返回o所在的索引
14
>>> alphabet.find('bfg') #'bfg'字符串不在字符串中,所以返回值为-1
-1
>>> alphabet.find('123') #‘123’不再字符串中,所以返回值为-1
-1
>>> alphabet.find('c',10,15) #检查字符是否在10-15之间,是则返回索引,不是则返回-1
-1
连接、重复、成员查询
可以用‘+’把两个或者多个字符串连接成一个字符串
可以用‘*’重复输入字符串
可以用‘in’,‘not in‘查询是否为字符串的成员
连接
>>> string1='I am '
>>> string2='Max'
>>> string1+string2
'I am Max'
>>> string3='a '
>>> string4='cool '
>>> string5='guy.'
>>> string1+string3+string4+string5
'I am a cool guy.'
字符串的连接还可以使用内置函数join,并且可以利用不同的符号连接
>>> '-'.join(('I','am','Max')) #用短线连接,括号里为一个参数,必须加括号
'I-am-Max'
>>> ' '.join(['I','am','Max'])#用空格连接,括号里为一个参数,可以为中括号
'I am Max'
>>> sep='*' #设置分隔符
>>> a='相乘要使用'
>>> b='字符串重复n次要用'
>>> c='乘'
>>> sep.join((a,b,c)) #用 *分割连接a,b,c三个量
'相乘要使用*字符串重复n次要用*乘'
字符串同样可以进行分割 ==string.split(sep)==,sep表示分割的符号
>>> Today='Today is 4th April 2020'
>>> Today.split(' ')#使用字符串中的空格分割字符串,输出的为一个列表
['Today', 'is', '4th', 'April', '2020']
>>> Time='2020-04-04-15-42-37'
>>> Time.split('-') #使用字符还中的短线分割字符串,输出的是一个列表
['2020', '04', '04', '15', '42', '37']
>>> Time.split('15') #使用15分割字符串
['2020-04-04-', '-42-37']
重复
>>> name='Maximum'
>>>> name+name+name #加号连接三个变量name
'MaximumMaximumMaximum'
>>> name*3 #*3表示重复3次,等同于上面
'MaximumMaximumMaximum'
>>> print('-'*10+'Max'+'-'*10) #print()打印输出
----------Max----------
>>> print('-'*10,'Max','-'*10) #pring()打印可以用逗号连接,但是两个字符串之间会有空格,表示的是输出三个字符串
---------- Max ----------
成员判断
>>> names='Max Kiki Melinda'
>>> 'Max' in names #Max是names的部分字符串
True
>>> 'Max ' in names #‘Max ’包含空格,同样是names的部分字符串
True
>>> 'kiki' in names #大小写同样要注意
False
>>> 'Tony' not in names
True
>>> 'Melinda' not in names
False
字符串转化
>>> int('123') #数字字符串转化为整数
123
>>> str(123) #整数转化为字符串格式
'123'
>>> float('1.234')#数字型字符串转化为浮点数
1.234
#以下是字符与对应的数字编码之间的变换。
>>> ord('a')#字母a转化为对应的数字编码
97
>>> ord('z')#字母z转化为对应的数字编码
122
>>> chr(97)
'a'
>>> chr(122)
'z'
>>> chr(123)
'{'
>>> chr(1234)
'Ӓ'