start_time: 2024-04-29 05:45:57 +0800

(MAX第三篇)Python--字符串操作(一)

96
Maximum888
IP属地: 河南
2020.04.06 12:11 字数 1164

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 "<pyshell#115>", line 1, in <module>
    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)
'Ӓ'
最后编辑于 :2020-04-06 12:11:30
©著作权归作者所有,转载或内容合作请联系作者
序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 159569 评论 4 赞 363
序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 67499 评论 1 赞 294
文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
8 开封第一讲书人 阅读 109271 评论 0 赞 244
文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
8 开封第一讲书人 阅读 44087 评论 0 赞 209
正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 52474 评论 3 赞 287
文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
8 开封第一讲书人 阅读 40670 评论 1 赞 222
那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 31911 评论 2 赞 313
文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
8 开封第一讲书人 阅读 30636 评论 0 赞 202
序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 34397 评论 1 赞 246
正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 30607 评论 2 赞 246
正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 32093 评论 1 赞 261
序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 28418 评论 2 赞 254
正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 33074 评论 3 赞 237
文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
8 开封第一讲书人 阅读 26092 评论 0 赞 8
文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
8 开封第一讲书人 阅读 26865 评论 0 赞 196
我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
783c64db 45e5 48d7 82e4 95736f50533e 沈念sama 阅读 35726 评论 2 赞 276
正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
388e473c fe2f 40e0 9301 e357ae8f1b41 茶点故事 阅读 35627 评论 2 赞 270
end_time: 2024-04-29 05:45:57 +0800 Completed in 143.04814900000002ms