字符串类型内置方法
字符串(str)
1、用途:描述性质的东西,如人的名字,单个爱好,地址,国家。
2、定义:使用''、""、'" "'、""" """包裹的一串字符
3、常用操作和内置方法:
1、安索引取值
2、切片
3、长度len
4、成员运算in|not in
5、移除空白strip
6、切分split
7、循环
1.按索引取值(只可取不可改变)
msg = 'hello stone'
print(f'索引为4:{msg[4]}')
print(f"索引值为6:{msg[6]}")
索引为4:o
索引值为6:s
2.切片(顾头不顾尾,步长)
msg = 'hello stone'
print(f"取出名字:{msg[6:12]}")
print(f"倒序:{msg[-1:-12:-1]}")
print(f"间隔2:{msg[::2]}")
取出名字:stone
倒序:enots olleh
间隔2:hlosoe
3.长度len
name = 'stone rock'
print(len(msg))
11
4.成员运算in or not in
name = 'stone rock nick king qiang xing ping'
print('stone' in name)
print('rui' in name)
True
False
5.移除空白strip
name = ' stone rock nick king qiang xing ping '
print(name.strip()) #默认移除两端的空格
stone rock nick king qiang xing ping
name = 'zzzzzzz stone rock nick king qiang xing ping zzzzzz'
print(name.strip('z')) #从两端移除z
stone rock nick king qiang xing ping
6.切割split
name = 'zzzzzzz:stone:rock:nick:king:qiang:xing:ping:zzzzzz'
print(name.split(':')) #以:号进行切割,默认从左边开始
['zzzzzzz', 'stone', 'rock', 'nick', 'king', 'qiang', 'xing', 'ping', 'zzzzzz']
name = 'zzzzzzz stone rock nick king qiang xing ping zzzzzz'
print(name.split('stone')) #以stone进行切割,默认从左边开始
['zzzzzzz ', ' rock nick king qiang xing ping zzzzzz']
name = 'zzzzzzz stone rock nick king qiang xing ping zzzzzz'
print(name.split(' ',4)) #以空格进行切割,默认从左边开始,切割4次
['zzzzzzz', 'stone', 'rock', 'nick', 'king qiang xing ping zzzzzz']
7.循环
name = 'stone rock nick'
for i in name:
print(i)
s
t
o
n
e
r
o
c
k
需要重点掌握的内置方法
1、lstrip和rstrip
s = '12345上山打老虎,老虎没打着,打到一只bigFanPing(小浣熊)'
print(s.lstrip('12345')) #lstrip左移除,从左边开始。
上山打老虎,老虎没打着,打到一只bigFanPing(小浣熊)
s = '12345上山打老虎,老虎没打着,打到一只bigFanPing(小浣熊)'
print(s.rstrip(')熊浣小(')) #rstrip右移除,从右边开始移除
12345上山打老虎,老虎没打着,打到一只bigFanPing(
2、lower和upper
name = 'stone nick KING yun XING'
print(name.lower()) #lower将大写字母变成小写
stone nick king yun xing
name = 'stone nick KING yun XING'
print(name.upper()) #upper将小写字母变成大写
STONE NICK KING YUN XING
3、startswith()和endswith()
name = 'stone nick KING yun XING'
print(name.startswith('stone')) #判断是否以stone开头,若为真,返回True,否则,返回Fause
print(name.endswith('nick')) #判断是否以nick结尾,若为真,返回True,否则,返回Fause
True
False
4、rsplit(右切割)
name = 'stone nick KING yun XING'
print(name.rsplit(' ',2))
['stone nick KING', 'yun', 'XING']
5、join(拼接)
print('...'.join(['1','3','5','6','7','9','10'])) #用...把列表中的字符串拼接起来,join运用于字符串之中
1...3...5...6...7...9...10
6、replace(代替)
name = 'stone nick KING yun XING'
print(name.replace('stone','rock')) #将字符串中的某一个元素用其他元素代替
rock nick KING yun XING
7、isdigit()(判断是否为数字)
age = '17'
print(age.isdigit())
msg = 'hello word'
print(msg.isdigit())
height = '183.55'
print(height.isdigit())
True
False
False
4、存一个值or多个值:一个值
5、有序or无序:只要是有索引的,都是有序的,字符串是有序的。
6、可变or不可变:不可变数据类型
其他操作:
1.find()、rfind()、index()、rindex()、count()
# str之find()、rfind()、index()、rindex()、count()
msg = 'my name is tank, tank shi sb, hha'
print(f"msg.find('tank'): {msg.find('tank')}") # 找不到返回-1
print(f"msg.find('tank',0,3): {msg.find('tank',0,3)}")
print(f"msg.rfind('tank'): {msg.rfind('tank')}") # 找不到返回-1
print(f"msg.index('tank'): {msg.index('tank')}") # 找不到报错
print(f"msg.rindex('tank'): {msg.rindex('tank')}") # 找不到报错
print(f"msg.count('tank'): {msg.count('tank')}")
msg.find('tank'): 11
msg.find('tank',0,3): -1
msg.rfind('tank'): 17
msg.index('tank'): 11
msg.rindex('tank'): 17
msg.count('tank'): 2
2.center()、ljust()、rjust()、zfill()
# str之center()、ljust()、rjust()、zfill()
print(f"'info nick'.center(50,'*'): {'info nick'.center(50,'*')}")
print(f"'info nick'.ljust(50,'*'): {'info nick'.ljust(50,'*')}")
print(f"'info nick'.rjust(50,'*'): {'info nick'.rjust(50,'*')}")
print(f"'info nick'.zfill(50): {'info nick'.zfill(50)}") # 默认用0填充
'info nick'.center(50,'*'): ********************info nick*********************
'info nick'.ljust(50,'*'): info nick*****************************************
'info nick'.rjust(50,'*'): *****************************************info nick
'info nick'.zfill(50): 00000000000000000000000000000000000000000info nick
3.expandtabs()
# str之expandtabs()
print("a\tb\tc: %s"%('a b c ')) # 默认制表符8个空格
print("'a\tb\tc'.expandtabs(32): %s"%('a b c '.expandtabs(32)))
a b c: a b c
'a b c'.expandtabs(32): a b c
4.captalize()、swapcase()、title()
# str之captalize()、swapcase()、title()
name = 'nick handsome sWAPCASE'
print(f"name.capitalize(): {name.capitalize()}")
print(f"name.swapcase(): {name.swapcase()}") # 大小写互转
print(f"name.title(): {name.title()}")
5.is数字系列(只是为了告诉你,判断是否为数字时除了中文数字以后使用isdigit()即可)
- isdecimal(): 检查字符串是否值包含十进制字符,如果是返回True,否则返回False。
- isdigit(): 如果字符串只包含数字则返回True,否则返回False。
- isnumeric(): 如果字符串中只包含数字字符,则返回True,否则返回False。
num = "1" #unicode
num.isdigit() # True
num.isdecimal() # True
num.isnumeric() # True
num = "1" # 全角
num.isdigit() # True
num.isdecimal() # True
num.isnumeric() # True
num = b"1" # byte
num.isdigit() # True
num.isdecimal() # AttributeError 'bytes' object has no attribute 'isdecimal'
num.isnumeric() # AttributeError 'bytes' object has no attribute 'isnumeric'
num = "IV" # 罗马数字
num.isdigit() # True
num.isdecimal() # False
num.isnumeric() # True
num = "四" # 汉字
num.isdigit() # False
num.isdecimal() # False
num.isnumeric() # True
===================
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)
================
import unicodedata
unicodedata.digit("2") # 2
unicodedata.decimal("2") # 2
unicodedata.numeric("2") # 2.0
unicodedata.digit("2") # 2
unicodedata.decimal("2") # 2
unicodedata.numeric("2") # 2.0
unicodedata.digit(b"3") # TypeError: must be str, not bytes
unicodedata.decimal(b"3") # TypeError: must be str, not bytes
unicodedata.numeric(b"3") # TypeError: must be str, not bytes
unicodedata.digit("Ⅷ") # ValueError: not a digit
unicodedata.decimal("Ⅷ") # ValueError: not a decimal
unicodedata.numeric("Ⅷ") # 8.0
unicodedata.digit("四") # ValueError: not a digit
unicodedata.decimal("四") # ValueError: not a decimal
unicodedata.numeric("四") # 4.0
#"〇","零","一","壱","二","弐","三","参","四","五","六","七","八","九","十","廿","卅","卌","百","千","万","万","亿"
6.is其他
- isalnum(): 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
- isalpha(): 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
- islower(): 如果字符串中只包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False。
- isspace(): 如果字符串中只包含空白,则返回True,否则返回False
- isupper(): 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False。
- istitle(): 如果字符串是标题类型的(见title()),则返回True,否则返回False。