字符串
一 整型、布尔值、字符串
int&str&bool三者之间可以相互转换
二 字符串的常规操作及内置方法
1.字符串拼接(相加&相乘)
-----字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
2.字符串的操作方法:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s = '你为什么那么美,我始终不能将你置之不顾' # 用索引取值 print(s[-5]) print(s[10]) # 切片 0可以省略不写 print(s[0:10]) print(s[:10]) print(s[:]) print(s[:10:2]) # 加步长每隔2个取一个值 # 反向取值必须加步长, 最后一位的索引值为-1, print(s[-1:-8]) print(s[-1:-8:-2])
3.字符串的内置方法
大前提:对字符串的任何操作都是产生一个新的字符串,与原字符串没有关系
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
s = 'iloveyougenuinly' t1 = s.count('a') # 在字符串中查找指定字符有多少个 t2 = s.upper() # 将字符串中的字符全部大写 t3 = s.lower() # 将字符串中的字符全部小写 t4 = s.title() # 非字母隔开的每个单词的首字母大写 t5 = s.find('a') # 通过元素获取其索引,找到第一个就返回,找不到会返回-1。 t6 = s.index('a') # 通过元素获取其索引,找到第一个就返回,找不到会报错。 t7 = s.capitalize() # 将字符串中的首字母大写 t8 = s.replace('a','nb',2) # 替换,由什么替换成什么,替换几次 t9 = s.startswith('w') # 判断以什么为开头 可以切片 t10 = s.startswith('i',3,) # 判断以什么为开头 可以切片,取索引3后面的所有字符 t11 = s.endswith('i',3) # 判断以什么结尾,可以切片,取索引3后面的所有字符 t12 = s.swapcase() # 大小写反转 t13 = s.isupper() # 判断字符串中所有字母是否为大写,返回布尔值 t14 = s.islower() # 判断字符串中所有字母是否为小写,返回布尔值 t15 = s.isdigit() # 字符串只由数字组成 t16 = s.isalpha() # 字符串只由字母组成 t17 = s.isalnum() # 字符串由字母或数字组成 --------------------------------------------------------------- t18 = s.strip('W') # 默认去除字符串两边的空格,换行符,制表符,只是去除左边-->lstrip()去除右边-->rstrip(),可设置去除的字符 t19 = s.split() # 默认按照空格分割, t20 = s.split('r') # 指定字符进行分割, t21 = s.split('s',2) # 指定字符进行分割,且指定分割次数 --------------------------------------------------------------- join 连接符 l1 = ['wusir', 'alex', 'taibai'] # 操作列表时,列表里面的内容必须全部是字符串类型 t22 = ''.join(l1) # 默认连接 t23 = '-'.join(l1) # 指定字符连接 --------------------------------------------------------------- 字符串的格式化输出 第一种情况 m = '姓名:{} 年龄:{} 性别:{}' w = m.format('烟雨江南',20,'男') print(w) 第二种情况 m = '姓名:{0} 年龄:{1} 性别:{2} 我永远{1}岁' w = m.format('烟雨江南',18,'男') print(w) 第三种情况 m = '姓名:{name} 年龄:{age} 性别:{sex} 我永远{age}岁' w = m.format(name = '烟雨江南',age = 18,sex = '男') print(w)
4. 正数索引和负数索引可以混用。只要能指到正确的元素即可。
三 字符串的格式化输出**
现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式
''' ------------ info of Alaa Li ----------- Name : Ala Li Age : 22 job : Teacher Hobbie: girl ------------- end ----------------- '''
只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
name = input('请输入姓名:') age = input('请输入年龄:') job = input('请输入职业:') hobbie = input('请输入爱好:') msg = ''' ------------ info of %s ----------- Name : %s Age : %s job : %s Hobbie: %s ------------- end ----------------- '''%(name,name,age,job,hobbie) print(msg) ------------ info of 人间白首 ----------- Name : 人间白首 Age : 18 job : 作者 Hobbie: 玄幻小说 ------------- end -----------------
%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
msg = "我是%s,年龄%d,目前学习进度为80%"%('金鑫',18) print(msg)
---->这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
msg = "我是%s,年龄%d,目前学习进度为80%%"%('jiajia',18) print(msg)
====>
这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。