12-27字符串相关运算与类型转换

字符串相关运算与类型转换

一.获取单个或多个字符

字符串中的每一个字符都会对应一个唯一的下标(索引)用来表示字符在字符串中的位置。下标从0开始,依次增加。下标也可以倒着数,倒着第一个字符下标是-1,
一. 获取单个字符(不能越界)
1. 字符串[下标] - - 获取字符串中指定下标对应的字符。

a.字符串 - 只要结果结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
b.[] - 固定写法
c.下标 - 需要获取的字符对应的下标;注意,下标不能超出字符串的范围。

例:'hello'  -->  h 下标为 (0,-5 )    o 下标为 (4,-1)  
两个下标,正数是从头开始数,负数是从尾开始倒着数。
result1 = '生命的灿烂光辉!'[0]    #获取字符串中下标是0的字符,并赋值给变量result1
print(result1)
二.获取部分字符(字符串切片)
1. 字符串[开始下标:结束下标:步长] - 从开始下标开始,获取到结束下班前为止。每次下标值加上步长去获取下一个字符。

a.字符串 - 只要结果结果是字符串的表达式都可以,例如:字符串字面量,字符串变量
b.[] - 固定写法
c.开始下标、结束下标 - 下标值(这儿的下标可以越界)
d.步长 - 必须是整数(正负数都行),如果步长是正,从开始下标开始正向获取;如果步长是负数,从开始下标开始倒向获取。
注意:当步长为正,要求开始下标对应的字符位置必须在结束下标对应的字符位置的前面,否则结果为空串。 当步长为负,要求开始下标对应的字符位置必须在结束下标对应的字符位置的后面,否则结果为空串。
补充说明:步长为正时,字符首 开始下标 结束下标 字符尾 【【【【【步长为负时,字符首 结束下标 开始下标 字符尾

str2 = '人生若只如初见!'
print(str2[0:8:3])   #从前往后取                       (人只见)
print(str2[0:-1:2])                            #        (人若如见)
print(str2[0:-1:-2])   #这个是空。                         (空)
print('结果:' , str2[-1:-12:-1])  # 从后往前取     (!见初如只若生人)
2.省略写法与说明
str4 = '生如夏花'
print(str4[1:3]     #省略步长默认是1             (如夏)
print(str4[:3:1]  #省略开始下标,从头开始     (生如夏)
print(str4[1::1]  #省略结束下标,取到字符串结尾 (如夏花)
print(str4[:])      # 全省略,正着取整句话。  (生如夏花)
print(str4[::-1])  # 让字符串倒序,          (花夏如生)
三.字符串相关运算
1.字符串支持的运算符: + , * ,> , < ,== , != , >= , <= 。python中的字符串支持数学运算符中的+和*,以及所有的比较运算符。

1.+ :字符串1 + 字符串2 -将字符串拼接在一起,产生 一个新的字符串。注:字符串和数字不能混合相加。
2.* :字符串 * N(正整数) - 字符串重复N次,产生一个新的字符串。
注:字符比较大小:从第一个字符开始,依次往后找到第一个不相等的字符对,判断它们的编码值的大小。 谁的编码值大,对应的字符串大。不再往后比较。

newstr = "asd" + "1" + '123'
print(newstr)
newstr = "asd" * 2
print(newstr)
print("asd" + "1" * 2)

3.判断字母大小写的应用例:

1判断是否是小写字母: 'a'<=变量<=‘z’   ---- 变量>='a' and 变量>='z'
1判断是否是大写字母: 'A'<=变量<=‘Z’  ----  变量>='A' and 变量>='Z'
#判断一个字符串中第三个字符是否是字母。
str2 = 'asdwe2345'
char = str2[2]   #将第三个字符取出
print('是否是字母', 'a'<= char <='z' or 'A'<= char <='Z')
  1. == , != 可以判断两个字符串是否相等或者不相等。
print("人生" == '人生')   #结果True
print("人生" == '生人')   #结果 False
四.in 和 not in操作 (在什么里面和不在什么里面)
1.in: 字符串1 in 字符串2 ----判断字符串2是否包含字符串1.(判断字符串1是否是字符串2的子串)
2.not in: 字符串1 not in 字符串2 ----判断字符串2是否不包含字符串1.(判断字符串1是否不是字符串2的子串)
print('asd' in ' asdf welwe')       # True
print('asd' not in ' asdf welwe')    # False
五.len函数(长度是从1开始记。)
1. len(序列) -- 获取序列长度,获取序列中元素的个数。

a.序列:字符串、列表、元组、字典等等都属于序列。
b.len(字符串) -- 获取字符串的长度(字符的个数) 结果是一个整数,空的话是0.
注:【一个可以转移的转义字符长度是1 【一个编码字符的长度是1 【一个空格字符的长度是1 【手动按的tab的长度一般是4,,\t长度是1.

print(len('称霸劳而无功' ))    #长度6
str3 = input("请输入:")
print(str3[len(str3)-1])    
#`len长度是从1开始数,而下标从0开始数。所以从长度中取对应下标时要减1.`
六.格式字符串
1.在字符串中通过格式占位符来代替字符串中变化的部分,然后在后面通过数据或者变量确定变化。

1.常用占位符
%s (字符串)
%d (整数)
%f (小数) (%.nf 保留小数点后面n位小数)
%c (字符) (可以将数字转换成字符)

2.包含占位符的字符串: 字符串 %(值1,值2,值3……)

1.% -- 固定写法
2.()-- 固定写法,字符串中只有一个占位符时,这个()可以省略。
3.括号里的值 -- 值和占位符要一一对应(个数、类型、位置都要对应)

name = input('姓名:')
age = 18
sex = '男'
message = '我叫%s,今年%d,性别:%s.字符%c' %(name,age,sex,97)
print(message)
print('我叫%s,今年%d,性别:%s.字符%c' %(name,age,sex,97))
七.类型转换
类型名(数据) -- 将指定的数据转换成指定类型。

1.int(数据) - 将其它数据转换成整形

print(int(1.6))  # 浮点数可以转换成整数,直接保留整数部分。
print(int(True))   #布尔可以转化成整数,True -- 1 False --0
print(int('12'))   #只有去掉字符串的引号后本身就是一个整数的字符串才能转换成整数。

2.float(数据) -将其它数据转换成浮点型

print(float(122)) #所有的整数都可以转换成浮点数,在后面加.0
                  #所有的布尔都可以转换成浮点数。
print(float('12.3')) #去掉引号后本身就是一个数字的字符串就能转换。

3.bool(数据) -将其它数据转换成布尔
注:python 中所有的数据都可以转换成布尔。【 所有为空为0的值都会转换成False.其它的都是True 。

print(bool(12.1))    #True
print(bool(''))     # False
print(bool(None))  # False ,None是关键字。

4.str(数据) -将其它数据转换成字符串,
python中所有的数据都可以转换成字符串,在数据前后各加一个引号。

八.Python 部分字符串内建函数说明
1.字符串.capitalize() - 将指定的字符串的第一个字符转换成大写字母,返回新的字符串。注:只有第一个字符是字母的时候才有效。
str1 = 'adsf'
print(str1 . capitalize())
2.字符串对齐方式

a.居中: 字符串.center(width, fillchar) - width决定新的字符串长度。
b.左对齐: 字符串.ljust(width, fillchar) - fillchar用来填充多出来位置的字符。
c.右对齐: 字符串.rjust(width, fillchar) - width 是整数,fillchar 是字符。

str1 = 'adsf'
print(str1 . center(6,'2'))
print(str1 . ljust(6,'2'))
print(str1 . rjust(6,'2'))
3.字符串.count(字符串2) - 在字符串中统计字符串2出现的次数。
str3 = 'adsfagfewqrafdasdfb'
print(str3.count('a'))
print('adsfagfewqrafdasdfb'.count('a'))
4.字符串.isalpha() - 判断字符串中是否全是字母或者数字,

注意:非ascll码中的字符检测不出来!

print('asdfas'.isalpha())    #返回的结果为布尔型
5.字符串 . join(字符串2) - 将字符串插入到字符串2每个字符之间。
str3 = '*'.join('qwe')
print(str3)       #结果;q*w*e
6.字符串.split(字符串2) - 以字符串2去切割字符串1,返回一个列表。
print('12,32,44'.split(','))   #结果:['12', '32', '44']
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容