按索引取值
字符串是不可变类型,并不能改变字符串的值
最多可以有三个参数,分别是起始位置,结束为止和步长,可以正向取值,反向取值(起始位置大于结束位置或者没有起始位置与结束位置,步长为-1表示从最后一个开始,步长为负数)
hobbies = "music basketball" print(hobbies[0]) print(hobbies[1]) print(hobbies[5]) print(hobbies[0:5]) print(hobbies[:5]) print(hobbies[0:5:2]) print(hobbies[0:5:-2]) print(hobbies[11:5:-2]) print(hobbies[-1]) print(hobbies[-2])
输出

/usr/local/bin/python3.6 /Users/albert/Desktop/6。2/01字符串的操作.py m u * music music msc * tka l l * # *表示空格输出
长度运算
print(len('name')) # 4
成员运算
print('a' in 'Albert') #False print('a' in not 'Albert') # True
移除空白strip
print(' name'.lstrip()) # 移除左边空白 print('name '.rstrip()) # 移除右边空白 print(' name '.strip()) # 移除两边空白 #name #name #name
切分split
print('n a me'.split(',')) print('n,a me'.split(',')) print('n,/a /me'.split('/',1)) # 数字表示切割次数,默认全部切割 print('n,a /me'.split('/')) print('a|b|c'.rsplit('|',1)) # 从右边开始切割 # ['n a me'] # ['n', 'a me'] # ['n,', 'a /me'] # ['n,a ', 'me'] # ['a|b', 'c']
组合join
print('a'.join('1234')) print('a'.join('bcde')) tag = ' ' print(tag.join(['I', 'say', 'hello', 'world'])) # 可迭代对象必须都是字符串 # 1a2a3a4 # bacadae # I say hello world
替换replace
print('abc name id'.replace('a', 'card')) name = 'albert say :i have a dream,my name is albert' print(name.replace('albert', 'Albert', 1)) # 注意此时name原来的值并没有改变,而是产生了一个替换之后新的值 # cardbc ncardme id # Albert say :i have a dream,my name is albert
formate的三种用法
#formate 基本用法 res = '{} {} {}'.format('Albert', 18, 'male') # 相当于%s,其占位符的作用 print(res) res = '{1} {0} {1}'.format('Albert', 18, 'male') # 按照索引对应值,与索引序列相关 print(res) res = '{name} {age} {sex}'.format(sex='male', name='Albert', age=18) # 按照关键字对应值,只与key对应 print(res) # Albert18 male # 18 Albert 18 # Albert 18 male
formate 高级用法
字符串其他操作
#find,rfind,index,rindex,count name='albert say hello' print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引 # print(name.index('e',2,4)) #同上,但是找不到会报错 print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有 #center,ljust,rjust,zfill name='albert' print(name.center(30,'-')) print(name.ljust(30,'*')) print(name.rjust(30,'*')) print(name.zfill(50)) #用0填充 #expandtabs name='albert\thello' print(name) print(name.expandtabs(1)) #captalize,swapcase,title print(name.capitalize()) #首字母大写 print(name.swapcase()) #大小写翻转 msg='albert say hi' print(msg.title()) #每个单词的首字母大写 #is数字系列 #在python3中 num1=b'4' #bytes num2=u'4' #unicode,python3中无需加u就是unicode num3='四' #中文数字 num4='Ⅳ' #罗马数字 #isdigt:bytes,unicode print(num1.isdigit()) #True print(num2.isdigit()) #True print(num3.isdigit()) #False print(num4.isdigit()) #False #isdecimal:uncicode #bytes类型无isdecimal方法 print(num2.isdecimal()) #True print(num3.isdecimal()) #False print(num4.isdecimal()) #False #isnumberic:unicode,中文数字,罗马数字 #bytes类型无isnumberic方法 print(num2.isnumeric()) #True print(num3.isnumeric()) #True print(num4.isnumeric()) #True #三者不能判断浮点数 num5='4.3' print(num5.isdigit()) print(num5.isdecimal()) print(num5.isnumeric()) ''' 总结: 最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景 如果要判断中文数字或罗马数字,则需要用到isnumeric ''' #is其他 print('===>') name='alb123ert' print(name.isalnum()) #字符串由字母或数字组成 print(name.isalpha()) #字符串只由字母组成 print(name.isidentifier()) print(name.islower()) print(name.isupper()) print(name.isspace()) print(name.istitle())
字符串常用方法查询
序号 | 方法及描述 |
---|---|
1 | capitalize() |
2 | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
4 | bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 |
5 | encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
6 | endswith(suffix, beg=0, end=len(string)) |
7 | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
8 | find(str, beg=0 end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
9 | index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常. |
10 | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
11 | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
12 | 如果字符串只包含数字则返回 True 否则返回 False.. |
13 | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 | 如果字符串中只包含空白,则返回 True,否则返回 False. |
16 | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 | 返回字符串长度 |
20 | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
21 | 转换字符串中所有大写字符为小写. |
22 | 截掉字符串左边的空格或指定字符。 |
23 | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | 返回字符串 str 中最大的字母。 |
25 | 返回字符串 str 中最小的字母。 |
26 | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
27 | rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
28 | rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
29 | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 | 删除字符串字符串末尾的空格. |
31 | split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串 |
32 | 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 | 在字符串上执行 lstrip()和 rstrip() |
35 | 将字符串中大写转换为小写,小写转换为大写 |
36 | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 | translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | 转换字符串中的小写字母为大写 |
39 | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
查看Python中的其他数据类型及方法请点击Python中的基本数据类型和使用方法