字符串类型内置方法

字符串类型内置方法

字符串(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\tb\tc\t'))  # 默认制表符8个空格
print("'a\\tb\\tc'.expandtabs(32): %s"%('a\tb\tc\t'.expandtabs(32)))

a\tb\tc: a  b   c   
'a\tb\tc'.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。
posted @ 2019-05-24 07:59  最后的别离  阅读(313)  评论(0编辑  收藏  举报