python3自学之路-笔记11_常用的字符串操作详解
下面一段代码说明一切:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# File : 字符串常用函数.py
# Author: DaShenHan&道长-----先苦后甜,任凭晚风拂柳颜------
# Date : 2019/3/12
#查找计算类
'''
len(str) 返回字符串长度
str.find(sub,start=0,end=len(str)) 返回字符串中指定字符的下标 找不到就返回-1 返回第一个匹配,非贪婪
str.rfind(sub,start=0,end=len(str))返回字符串中指定字符的下标 找不到就返回-1 返回最后一个匹配,贪婪 end是不会被取到的 都是左闭右开
index 同JavaScript中indexOf的用法,从左往右查找 找不到会报错,找得到会返回一个位置
rindex 同index,区别是从右往左进行查找
count 计数
name='我是大佬,你是菜鸟'
len(name)
name.find('菜鸟')
name='我是大佬,你是菜鸟'
len(name)
str1=name.find('菜鸟',8)
str2=name.rfind('是')
str3=name.count('是')
str4=name.rindex('菜')
print(str1,str2,str3)
print(str4)
'''
#转换类
'''
str.replace(old,new,count) 待替换字符,替换成字符,替换多少个 count=str.count(old)的情况等于替换全部 默认count等于全部
str.capitalize() 将字符串首字母变成大写,字符串开头无字目就不会有变化
str.title() 将字符串中每个单词首字母变大写,只要字母分离了就会
str.lower() 将字符串中每个字母变成小写
str.upper() 将字符串中每个字母变成大写
name='我是大佬,你是菜鸟'
name1='hello my friend-jj-kk'
str1=name.replace('是','is ',1)
str2=name.rfind('是')
str3=name.count('是')
str4=name.rindex('菜')
str5=name1.title()
print(str1,str2,str3)
print(str4)
print(str5)
'''
#填充压缩类
'''
str.ljust(width,fillstr) #靠左后填充 填充后字符串总长度,填充符
str.rjust(width,fillstr) #靠右后填充
str.center(width,fillstr) #中间填充
str.lstrip(char) #移除字符串中的指定字符,默认移除空格\n等 仅仅只移除左侧的空字符
str.rstrip(char) #移除字符串中的指定字符,默认移除空格\n等 仅仅只移除右边的空字符
被移除的内容是字符集合
开始检索时第一位被检索到的必须在字符集里面,否则无效
name='爆肝python'
name1='wwww00x25爆肝python'
print(name.ljust(10,'!'))
print(name.rjust(10,'!'))
print(name.center(10,'!'))
print(name1.lstrip('w0x'))
'''
#分隔拼接类
'''
str.split(sep,maxsplit) #分隔符,最大被分割次数,省略就是全部分割 返回一个列表
str.partition(sep) #分隔符 返回一个三元素元组 左侧元素,分割符,右侧元素 从左开始找
str.rpartition(sep) #分隔符 返回一个三元素元组 左侧元素,分割符,右侧元素 从右开始找
#如果找不到该分隔符,那么第一个元素就是整个字符串,右边两个元素为空
str.spitlines(keepends) 有换行符的字符串才会被如此分割 返回一个列表 参数可省略,true or false 默认false不保留换行符
str.join(iterale) 传入一个可迭代对象(可以被for遍历的对象) 是split的可逆过程
name='hello i am dashen , how are you ?'
name1='dashen-25-12#209-0813-13568'
list1=name.split(' ')
list2=name1.split('-',3)
tup1=name1.partition('-')
tup2=name1.rpartition('-')
str1='哈哈\n我是大佬\n你是菜鸟\n66666'
print(list1,list2)
print(tup1,tup2)
print(str1.splitlines())
items=['123','456','789']
a='-'.join(items)
print(a)
'''
#字符串判定类
'''
str.isalpha() #判定字符串是否全部由字母 (包含大写小写 不能包含转义) 组成 返回false or true 空串也是false
str.isdigit() #判定字符串是否全部由数字组成,空串也false 返回false or true
str.isalnum() #判定字符串是否全部由数字或者字母组成,空串也false 返回false or true 单独的数字或者字母都是true
str.isspace() #判定字符串是否全部都是空白符 空串也false 返回false or true 里面只能是空格换行等
str.startswith(prefix,start=0,end=len(str)) #判定字符串是否由prefix开头 后面两个参数有默认值,可以不管 返回false or true
str.endswith(prefix,start=0,end=len(str))#判定字符串是否由prefix结尾 后面两个参数有默认值,可以不管 返回false or true
name='2019-03-12.xls'
print(name.startwith('2018'))
name='2019-03-12.xls'
print(name.startswith('2019'))
print(name.startswith('19',2))
print(name.endswith('.xls'))
print(name.endswith('ls',-2))
'''
#特殊补充
'''
in 单独的语句 例如 'name' in 'my name is' 返回True
not in 单独的语句 例如 'name' in 'my name is' 返回False
'''