python_learn 五_关于字符串

1、字符串的特点
①字符串属于不可变有序序列:
不可变是指给a赋一个字符串后,再给a赋一个字符串,在内存里第二个字符串不会覆盖第一个字符串,会另外开辟一块内存。
有序是指字符串a b c与字符串c b a不一样,是两个字符串。
②使用单引号,双引号,三单引号或三双引号作为界定符.
③Python3.x中,字符串就是Unicode型。
Unicode可以表示世界上任何一种文字。
2、判断一个变量是否为字符串类型

>>> a = "你好"
>>> type(a)
<class 'str'>
>>> isinstance(a,str)
True

转义字符

转义字符 描述含义
\b 退格,把光标移到前一列的位置
\f 换页符
\n 换行符
\r 回车
\t 水平制表符
\v 垂直制表符
\\ 斜线
\' 单引号
\" 双引号
\ooo 3位八进制对应的字符
\xhh 2位十六进制对应的字符
\uhhhh 4位十六进制数表示的Unicode字符

为避免对字符串中的转义字符进行转义,可以使用原始字符串,在字符串前面加上字母r或R表示原始字符串,其中的所有字符都只表示原始含义。常用在文件路径,URL和正则表达式等。

>>> print("'abc'")
'abc'
>>> print('\'abc')
'abc
>>> print("\\")
\
>>> print("abc\n123")
abc
123
>>> print(r'\'sdf')
\'sdf
>>> print('\\\'sdf')
\'sdf

3、字符串的索引
利用方括号通过索引值得到对应位置(下标)的字符。Python中索引有两种访问方式:
①从前往后的正向索引,n个字符串,索引值从0到n-1;
②从后往前的反向索引,n个字符串,索引值从-1到-n。

>>> a = "世界这么大,我想去看一下"
>>> a[0]
'世'
>>> a[-1]
'下'

4、字符串切片
从字符串中提取子串,切片适用于字符串、列表、元组、range对象等类型。
切片的格式一般为:<字符串或字符串变量>[N:M:step]
参数N是切片的起始索引序号;参数M是切片的结束索引序号;参数step是切片的步长(可省略)。

>>> s="世界那么大,我想去看看"
>>> s[0:5]
世界那么大          #5应该是“,”但是没有显示,是因为python只取到前一位,是左闭右开[  )
>>> s[0:5:2]
世那大
>>> s[6:]         #后面不写,会一直取到最后
我想去看看    
>>> s[:5]         #同样的,前面不写,会默认从0开始
世界这么大
>>>s[:]           #全都不写,默认全写
世界那么大,我想去看看

5、format()的使用
使用方式:<模板字符串>.format(<逗号分隔的参数2)
其中模板字符串是一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果,例如:

>>>"{}那么大,{}想去看看。".format("世界","我")
世界那么大,我想去看看。

高级一点的用法:

>>> a = "{0}那么大,{1}想去看看".format("我","世界")
>>> a
'我那么大,世界想去看看'
>>> a = "{1}那么大,{1}想去看看".format("我","世界")
>>> a
'世界那么大,世界想去看看'

可以指定填空,而不需要默认的顺序。
更高级的用法:
format()的槽不仅包括参数序号还包括格式控制信息,语法格式为:{<参数序号>:<格式控制标记>}
<格式控制标记>有以下几种:


image.png
>>> a = "{0:#>9}那么大,{1}想去看看".format("我","世界")
>>> a
'########我那么大,世界想去看看'
>>> a = "{0:#<9}那么大,{1}想去看看".format("我","世界")
>>> a
'我########那么大,世界想去看看'
>>> a = "{0:#^9}那么大,{1}想去看看".format("我","世界")
>>> a
'####我####那么大,世界想去看看'

解释:填充、对齐和宽度一般同时使用,如上,0:#>9表示:我 是一个字符,需要填9个字符,剩下8个用#来填充,而 我 是在#的右边填充。

>>> a = "{0:,}那么大,{1}想去看看".format(1234567,"世界")
>>> a
'1,234,567那么大,世界想去看看'
>>> a = "{0:,.5}那么大,{1}想去看看".format(123.4567,"世界")
>>> a
'123.46那么大,世界想去看看'

解释:从最左边开始,保留5位数字,并四舍五入。对于数字还需要有逗号

>>> a = "{0:.5}那么大,{1}想去看看".format("我的娃v如果v让人特别特","世界")
>>> a
'我的娃v如那么大,世界想去看看'

解释:如果位字符串,保留前5个字符,不需要逗号。

>>> "{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(520)
'1000001000,Ȉ,520,1010,208,208'
>>> "{0:e},{0:E},{0:f},{0:%}".format(3.14159)
'3.141590e+00,3.141590E+00,3.141590,314.159000%'

解释:
整数
b:输出整数的二进制方式
c:输出整数对应的Unicode字符
d:输出整数的十进制
0:输出整数的八进制
x:输出整数的小写十六进制
X:输出整数的大写十六进制
浮点数
e:输出浮点数对应的小写字母e的指数形式
E:输出浮点数对应的大写字母E的指数形式
f:输出浮点数的标准浮点形式
%:输出浮点数的百分比形式
6、字符串操作符

>>> x = "我的猫"
>>> y = "狗很可爱"
>>> x + y
'我的猫狗很可爱'
>>> x * 4
'我的猫我的猫我的猫我的猫'
>>> "mao" in "wodemao"
True
>>> "abcd" in "abc"
False
>>> "ac" in "abc"
False

解释:
1、“+”是将两个字符串连在一起
2、“*”是将一个字符串重复写几次
3、“ in ”是判断某个字符串是否在某个字符串里面。
7、字符串处理长度

函数 描述
len(x) 返回字符串x的长度或者是其他组合类型的元素个数
str(x) 把任意类型转换为字符串形式
chr(x) 返回Unicode编码对应的单字符
ord(x) 返回单个字符对应的Unicode编码
hex(x) 返回整数x对应的十六进制的小写形式
oct(x) 返回整数x对应的八进制的小写形式

8、字符串处理方法

方法 描述
str.lower() 以小写的方式全部返回str的副本
str.upper() 以大写的方式全部返回str的副本
str.split(sep=None) 返回一个列表,以sep作为分隔点,sep默认为空格
str.count(sub) 返回sub子串出现的次数
str.replace(old,new) 返回字符串str的副本,所有old子串被替换为new
str.center(width,fillchar) 字符串居中函数,fillchar参数可选
str.strip(chars) 从字符串str中去掉在其左侧和右侧chars中列出的字符
str.join(iter) 将iter变量的每一个元素后面增加一个str字符串
>>> "Sunshine always comes after the rain".split()
['Sunshine', 'always', 'comes', 'after', 'the', 'rain']
>>> "The most romantic thing is to hug each time you leave". count("h")
4
>>> "Python".center(15,"*")
'*****Python****'   #返回长度为width的字符串,fillchar是单个字符。
>>> "##brave###".strip("#")
'brave'
>>> "##brave###".lstrip("#")
'brave###'
>>> "##brave###".rstrip("#")
'##brave'
>>> Is = ["Python","Java","C++","Jsp"]
>>> " ".join(Is)  #向迭代变量iter元素之间插入字符串str形成新的字符串。
'Python Java C++ Jsp'
>>> "d".join("123456")
'1d2d3d4d5d6'

9、类型判断函数和类型转换函数
1、类型判断函数:
type(x):对变量进行类型判断,适用于任何数据类型。
2、类型转换函数:
int(x):将x转换为整数
float(x):将x转换为浮点数
str(x):将x转换为字符串

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容