PY基础之字符串类型内置方法
用途:
描述性质的东西,如人的名字、单个爱好、地址、国家等
定义:
使用\'\'、""、\'\'\'\'\'\'、""""""包裹的的一串字符
- u\'unicode\': unicode编码的字符串
- b\'101\': 二进制编码的字符串
- r\'\n\': 原生字符串,也就是说\'\n\'这是普通的两个字符,并没有换行的意思
常用操作+内置方法
重要
按索引取值,切片(只可取不可改变,顾头不顾尾)
str = \'nick ugly\'
print(str[1]) # \'i\'
print(str[1:3]) # \'ic\'
print(str[:4]) # \'nick\'
print(str[-4:]) # \'ugly\'
print(str[::-1]) # \'ylgu kcin\'
print(str[1:-2]) # \'ick ug\'
print(str[1:-1:2]) # ikul
长度len
取字符串长度
str = \'nick ugly\'
print(len(str)) # 9
成员运算in|not in
msg = \'my name is nick, nick handsome\'
print(\'nick\' in msg) # True
print(\'jason\' not in msg) # True
print(not \'jason\' in msg) # True
移除空白strip
s1 = \' nick handsome \'
print(s1.strip()) # 去两端的空白
s2 = \'***!!!!!nick handsome----***\'
print(s2.strip(\'-*!\')) # 指定多个字符一起去掉,只要strip里面有的字符就全部干掉
print(s2.strip(\'nick\')) # 指定多个字符一起去掉,只要strip里面有的字符就全部干掉
# 首先判断字符串s的两端字符,为*,再去strip里找有没有*,有就去掉,再去判断字符串s的两端字符,!-,再从strip里面找,有去掉,没有则停止
strip实例
# 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词
s = ["Hello", "Alaska", "Dad", "Peace"]
lis = []
for i in s:
ls = i.lower()
if ls.strip(\'qwertyuiop\') == \'\' or ls.strip(\'asdfghjkl\') == \'\' or ls.strip(\'zxcvbnm\') == \'\':
lis.append(i)
print(li
切分split
s = \'***!!!!!nick handsome----***\'
print(s.split()) # 默认以空格切割字符串
print(s.split(\'!\')) # 以!切割
print(s.split(\'!\', 2)) # 指定切割两次
循环
s = \'nick ugly\'
for i in s: # for 循环遍历s
print(s)
比较重要
lstrip&rstrip
s2 = \'***!!!!!nick handsome----***\'
print(s2.lstrip(\'*\'))
print(s2.rstrip(\'*\'))
\'\'\'
!!!!!nick handsome----***
***!!!!!nick handsome----
\'\'\'
lower&upper
s3 = \'aaabbJ\'
print(s3.lower()) # 大写->小写
print(s3.upper()) # 小写->大写
\'\'\'
aaabbj
AAABBJ
\'\'\'
startswith&endswith
s3 = \'aaabbJ\'
print(s3.startswith(\'b\')) # 是否以\'b\'开头-> False
print(s3.endswith(\'J\')) # 是否以\'J\'结尾-> True
rsplit
s2 = \'***!!!!!nick handsome----***\'
print(s2.split(\'*\', 1))
print(s2.rsplit(\'*\', 1))
\'\'\'
[\'\', \'**!!!!!nick handsome----***\']
[\'***!!!!!nick handsome----**\', \'\']
\'\'\'
join 一般和split联用
s3 = \'*\'
# 以s3为间隔符,拼接列表里的每一个元素
print(s3.join([\'234\', \'234\', \'234\'])) # 234*234*234
s = \'辣条/薯片/汽水/泡面/火腿肠/枸杞/当归/鹿茸\'
s1 = s.split(\'/\')
print(\'*\'.join(s1)) # 辣条*薯片*汽水*泡面*火腿肠*枸杞*当归*鹿茸
replace
s2 = \'yongjiu handsome\'
# 用信字符串替代旧字符串输出
print(s2.replace(\'yongjiu\', \'gebilaowang\')) # gebilaowang handsome
isdigit,isalpha
# 一般用于登陆验证输入
s2 = \'12312\'
print(s2.isdigit()) # 判断s2是否全为数字
s3 = \'aaac1c\'
print(s3.isalpha()) # 判断s3是否全为字母
find|rfind|index|rindex|count
s = \'***!!!!!nick $ handsome----***\'
# find()遍历找到的第一个字符的索引,默认从左找,找不到返回-1,不会报错
print(s.find(\'$\')) # 13
print(s.rfind(\'-\')) # 26
# index()遍历找到的第一个字符的索引,默认从左找,找不到会报错(建议不使用)
print(s.index(\'$\')) # 13
print(s.rindex(\'-\')) # 26
# count()返回字符串中指定字符的个数
print(s.count(\'!\')) # 5
center|ljust|rjust|zfill
s2 = \'nick handsome\'
print(s2.center(50, \'*\')) # ******************nick handsome*******************
print(s2.ljust(50, \'*\')) # nick handsome*************************************
print(s2.rjust(50, \'*\')) # *************************************nick handsome
print(s2.zfill(50)) # 0000000000000000000000000000000000000nick handsome
expandtabs
# 针对\t,只对\t起作用
s2 = \'a\ta\'
print(s2)
print(s2.expandtabs(8)) # 针对\t而言
\'\'\'
a a
a a
\'\'\'
captalize|swapcase|title
# 只针对英文
s2 = \'harry Potter\'
print(s2.capitalize()) # 首字母(一句话的开头)大写,其他全小写,用在段落开始
print(s2.swapcase()) # 大小写互换
print(s2.title()) # 所有单词首字母大写
\'\'\'
Harry potter
HARRY pOTTER
Harry Potter
\'\'\'
is系列
.isdecim.(): # 检查字符串是否值包含十进制字符,如果是返回True,否则返回False。
.isdigit(): # 如果字符串只包含数字则返回True,否则返回False。
.isnumeric(): # 如果字符串中只包含数字字符,则返回True,否则返回False。
.isalnum(): # 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
.isalpha(): # 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
.islower(): # 如果字符串中只包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False。
.isspace(): # 如果字符串中只包含空白,则返回True,否则返回False
.isupper(): # 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,# 否则返回False。
.istitle(): # 如果字符串是标题类型的(见title()),则返回True,否则返回False。