day2-字符串
在Python中字符串本身带有很多操作,字符串的特性:不可被修改
1. 字符串的定义
>>> name = '' #空字符串 >>> name = "loutao" #定义非空字符串 >>> name 'loutao' >>> name[1] #通过小标访问字符串 'o' >>> name[2] = 's' #字符串的值不能被修改,否则会报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment
2. 切片
字符串和列表,元组一样,都是可以切片的
3. 首字母大写(capitalize())
>>> name 'lou tao' >>> name.capitalize() 'Lou tao'
4. 统计(count(sub,start=None,end=None))
sub:统计的字符,start:开始位,end: 结束位,start和end默认为空时,则表示从全部字符中统计
>>> name 'lou tao' >>> name.capitalize() 'Lou tao' >>> name.count('o') 2 >>> name.count('o',1,5) 1
5. center(width,fillchar),ljust(width,fillchar),rjust(width,fillchar)
如果width (字符宽度) 小于等于(<=)字符串的长度,则返回原字符串,如果大于(>)字符串,则用fillchar字符填充
Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格)
>>> print('|','*'.ljust(10),'|') | * | >>> print('|','*'.ljust(10,'-'),'|') | *--------- | >>> print('|','*'.rjust(10,'-'),'|') | ---------* | >>> print('|','*'.center(10,'-'),'|') | ----*----- | >>> for a in range(1,6): ... print('a ='.ljust(5),repr(a).ljust(10),'b ='.ljust(5),repr(a * 2)) ... a = 1 b = 2 a = 2 b = 4 a = 3 b = 6 a = 4 b = 8 a = 5 b = 10
6. 编码(encode)
字符串的编码与解码 ;点击详情:py编码终极版
7. endwith(suffix,start=None,end=None),startswith(prefix, start=None,end=None)
判断是否已suffix结尾,是返回True, 否返回Fales;判断是否已prefix开始,是返回True,否返回Fales
suffix: 表示字符或者字符串,start: 开始位,end: 结束位,start和end默认为空,表示从整个字符串的结尾去判断
prefix: 表示字符或者字符串,start: 开始位,end: 结束位,start和end默认为空,表示从整个字符串的开头去判断
>>> name 'lou tao' >>> name.endswith('o') # 结尾找到"o" 字符 True >>> name.endswith('o',1,4) # 在索引1到4之间没有找到以"o"字符结尾 False
>>> name = "lou tao" >>> name.startswith('l') #开头找到"l" 字符 True >>> name.startswith('lou') #开头找到"lou" 字符串 True >>> name.startswith('lou',0,2) # 在索引0到2之间没有找到以"lou"字符串开头 False
8. find(sub,start=None,end=None)
全文查找字符或字符串sub,找到则返回其第一个字符的索引,找不到则返回-1
sub: 字符串或者字符, start:开始位,end: 结束位,start和end默认为空时,在整个字符串中查找
>>> name 'lou tao' >>> name.find('t') 4 >>> name.find('ta') 4 >>> name.find('ta',2) 4 >>> name.find('ta',1,2) -1
9,rfind(sub,start=None,end=None)
从左向右查找sub中第一个字符所在整个字符串中的索引值,没有找到则返回-1
>>> name 'lou tao' >>> name.rfind('t') 4 >>> name.rfind('t',2) 4 >>> name.rfind('t',1,2) -1
10. format()
详细信息参考:这里
format : >>> msg = "my name is {}, and age is {}" >>> msg.format("alex",22) 'my name is alex, and age is 22' >>> msg = "my name is {1}, and age is {0}" >>> msg.format("alex",22) 'my name is 22, and age is alex' >>> msg = "my name is {name}, and age is {age}" >>> msg.format(age=22,name="ale") 'my name is ale, and age is 22'
11. format_map()
数据格式,以字典形式传入
>>> msg = "my name is {name}, and age is {age}" >>> msg.format_map({'name':'alex','age':22}) 'my name is alex, and age is 22'
12. isalnum()
判断是否是一个阿拉伯数字和字母,中间不能有特殊字符
>>> age = '23' >>> age.isalnum() True >>> age = '2.3' >>> age.isalnum() False >>> age = '23ab' >>> age.isalnum() True >>> age = 'ab' >>> age.isalnum() True
13. isalpha()
判断是否是一个纯英文字符,包含大写
>>> age = 'ab' >>> age.isalpha() True >>> age = 'Ab' >>> age.isalpha() True >>> age = 'Ab23' >>> age.isalpha() False
14. isdigit()
判断是否是一个整数
>>> a = '9' >>> a.isdigit() True >>> a = '9.9' >>> a.isdigit() False
15. isspace()
判断是否是一个空格
>>> a = ' ab' >>> a.isspace() False >>> a = ' ' >>> a.isspace() True
16. istitle()
是否是一个标题(字符串中的每个单词的首字母大写)
>>> name = "Lou Tao" >>> name.istitle() True >>> name = "Lou tao" >>> name.istitle() False
17. isupper()
是否是大写,注意字符串必须全部是大写才会返回True, 否则返回False
>>> name = "LOUTAO" >>> name.isupper() True >>> name = "loutao" >>> name.isupper() False
18. islower()
是否是小写,注意字符串必须全部是小写才会返回True, 否则返回False
>>> name = "loutao" >>> name.islower() True >>> name = "LOUtao" >>> name.islower() False
19. isidentifier()
检测一段字符串可否被当作标志符,即是否符合变量名规范
>>> b = "defefdfd_df" >>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则 True
19. join()
序列用某个字符拼接成一个字符串,注意的是,序列的元素必须是str类型
>>> a = ['1','2','3'] >>> '|'.join(a) '1|2|3' >>> a = [1,2,3] >>> '|'.join(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: sequence item 0: expected str instance, int found
20. lower(),upper()
lower: 字符串中的大写字母 转换为小写字母,upper: 字符串中的小写字母转换为大写字母
>>> name = "LouTao" >>> name.lower() #大写字母转换为小写字母 'loutao' >>> name.upper() #小写字母转换为大写字母 'LOUTAO'
21. strip(),lstrip(),rstrip()
Python 中的strip用于去除字符串的首尾字符(默认为空格和换行符\n),同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符。这三个函数都可传入一个参数,指定要去除的首尾字符。注意的是,传入的是一个字符数组,编译器去除两端所有相应字符,直到没有匹配的字符。
>>> str = " \nloutao \n" >>> str.strip() 'loutao' >>> str.rstrip() ' \nloutao' >>> str.lstrip() 'loutao \n'
>>> str = "saaaay yes no yaaaass" >>> str.strip('say') #str依次被去除首尾在['s','a','y']数组内的字符,直到字符不在数组内。所以,输出的结果为:yes no ' yes no ' >>> str.strip('say ') #say后有空格 'es no' >>> str.lstrip('say') ' yes no yaaaass' >>> str.rstrip('say') 'saaaay yes no '
22. split()
分割函数,默认以空格分隔生成一个列表,如果使用其他字符分割,输入其他字符参数
>>> name = "lou tao" >>> name.split() #默认为空,按空格分割 ['lou', 'tao'] >>> name = "lou\ntao" >>> name.split('\n') #以 \n分割 ['lou', 'tao']
23. splitlines()
以换行分割,这个一般在windows上开发,移动到linux上执行,或者在linux上开发,移到windows上执行,因为换行在windows上是"\r\n",在linux上是"\n"
>>> name = "lou\ntao" >>> name.splitlines() ['lou', 'tao']
24. swapcase()
把大写换成小写,把小写换成大写
>>> name = "LouTao" >>> name.swapcase() 'lOUtAO'
25. replace(old,new[, max])
old: 旧字符串;new: 新字符串,用于替换old字符串;max可选字符串,替换不超过max次
>>> name = "Success is the sum of small efforts, repeated day in and day out" >>> name.replace('is','was') 'Success was the sum of small efforts, repeated day in and day out' >>> name.replace('is','was',0) #原字符串没有改变 'Success is the sum of small efforts, repeated day in and day out' >>> name.replace('is','was',1) 'Success was the sum of small efforts, repeated day in and day out'
26. zfill(width)
字符的长度是否大于等于(>=)width,如果比width小,则在字符串钱用0填充,如果>=width,则返回原字符串
>>> name = "loutao" >>> len(name) 6 >>> name.zfill(10) #width 大于字符串长度 '0000loutao' >>> name.zfill(6) #width小于等于字符串长度 'loutao'