python3 str操作方法大全

python3的str有各种各样的操作方法,下面我来一一列出:

 

目录

字母操作

字符/字符串寻找

条件判断

 


字母操作

capitalize() :将开头首字母改为大写,如果字符串开头非小写字母(如开头为大写字母、数字、空格等)则无效。

>>> s = 'elias find cookie'
>>> s.capitalize()
'Elias find cookie'

>>> s = 'Elias find cookie'
>>> s.capitalize()
'Elias find cookie'

>>> s = '01.lias find cookie'
>>> s.capitalize()
'01.lias find cookie'

>>> s = ' Elias find cookie'
>>> s.capitalize()
' elias find cookie'

 

title():以空格、符号、数字等隔开的首字母大写

>>> s = '01.lias find cookie'
>>> s.title()
'01.Lias Find Cookie'

>>> s = 'elias find cookie'
>>> s.title()
'Elias Find Cookie'

>>> s = '%elias find cookie'
>>> s.title()
'%Elias Find Cookie'

 

upper():所有字母全大写

>>> s = '1a2b3c4d5e6'
>>> s.upper()
'1A2B3C4D5E6'

 

lower():所有字母全小写

>>> a = '1A2B3C4D5E6'
>>> a.lower()
'1a2b3c4d5e6'

 

swapcase():全部字符大小写翻转

>>> s = '1UG5gj8JO5%&Hy'
>>> s.swapcase()
'1ug5GJ8jo5%&hY'

 

字符/字符串寻找

find(sub, start, end)返回符合sub的第一个索引(即通过sub找索引),可通过start 和end 指定索引范围,找不到sub则返回-1。start和 end可以不填入,默认填入的sub后的第一个为strat,第二个为end。

>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.find('h')
3

>>> s.find('h',4)
21

>>> s.find('h',4,10)
-1

>>> s.find('h2')      #字符串也可以,返回最小索引
3

index(sub, start, end)和find使用方法一样,但是如果找不到会报错

>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.index('h')
3

>>> s.index('h',4)
21

>>> s.index('h',4,10)
Traceback (most recent call last):
  File "", line 1, in 
    s.index('h',4,10)
ValueError: substring not found    #目标字符未在指定的索引内找到

>>> s.index('h2')    #字符串也可以,返回最小的索引
3

 

条件判断

注:条件判断返回的皆是bool

isalpah()是否全由字母字符串组成

>>> s = 'a1ch2ie283WNDLEWKUI3dheiuei'
>>> s.isalpha()
False

>>> s = 'asdfgh'
>>> s.isalpha()
True

 

isdigit()是否全由数字组成

>>> s = 'asdfgh123'
>>> s.isdigit()
False

>>> s = '123456'
>>> s.isdigit()
True

 

isalnum()是否全由数字、字母、数字和字母组成

>>> s = 'asdfgh123'
>>> s.isalnum()
True

>>> s = '123'
>>> s.isalnum()
True

>>> s = 'abc'
>>> s.isalnum()
True

>>> s = '%1122'
>>> s.isalnum()
False

>>> s = '*qas'
>>> s.isalnum()
False

 

isupper()是否全大写

>>> s = '*WQDWQ:"<.LLJU'
>>> s.isupper()
True

>>> s = 'eewcwe()wiud*'
>>> s.isupper()
False

 

islower()是否全小写

>>> s = 'eewcwe()wiud*'
>>> s.islower()
True

>>> s = '*WQDWQ:"<.LLJU'
>>> s.isupper()
True

 

istitle()被空格、数字、符号等隔开的首字母是否大写

>>> s = '1J6u8I9o'
>>> s.istitle
>>> s.istitle()
False

>>> s = '1T6H8G4F"W/F'
>>> s.istitle()
True

 

isspace()是否只由空格组成

>>> s = ''
>>> s.isspace()
False

>>> s = '      '
>>> s.isspace()
True

>>> s = ' j    '
>>> s.isspace()
False

 

isascii()是否为ascii码,判断时必须是字符串形式,否则会报错

#ascii码的判定,官方解释是在U+0000-U+007F之间的都是ascii码 
#官方文档:https://docs.python.org/3/library/stdtypes.html?highlight=isascii#str.isascii

>>> ord('a')   #将单个字符转为ascii码
97

>>> ord('哈')
21704

>>> s = 21704
>>> s.isascii()
Traceback (most recent call last):              
  File "", line 1, in 
    s.isascii()
AttributeError: 'int' object has no attribute 'isascii'           #纯数字会报错 必须是字符串


>>> s = '21704'
>>> s.isascii()
True

>>> s = ''
>>> s.isascii()
True

>>> s = '   '
>>> s.isascii()
True

>>> s = 'U0000'
>>> s.isascii()
True

>>> s = '/87u/09o'
>>> s.isascii()
True

 

isdecimal()字符是否只包含十进制字符串(我们正常使用的数字)

#在python中,二进制以0b开头表示,八进制用0o开头表示,十六进制用0x开头表示

>>> s = '120u'
>>> s.isdecimal()
False

>>> s = '010101001'
>>> s.isdecimal()
True

>>> s = '89000'
>>> s.isdecimal()
True

 

isidentifier()判断该字符串设为变量名是否合法,但是不太准确,它的判断方式应该不包含内置变量。可以用 keyword判断是否为内置函数,但是keyword只能判断相应一部分范围。

>>> s = 'print'
>>> s.isidentifier()
True

>>> s = 'def'
>>> s.isidentifier()
True

>>> s = 'python'
>>> s.isidentifier()
True

>>> s = 'def_1'
>>> s.isidentifier()
True

>>> s = '1'
>>> s.isidentifier()
False

>>> s = '1haha'
>>> s.isidentifier()
False

 

 keyword.iskeyword(s)可以判断是否为内置关键字,但是不全面,比如print就可以通过测试,下图为官方给出的内置关键字。

python3 str操作方法大全_第1张图片

>>> import keyword
>>> keyword.iskeyword(s)
False

>>> keyword.iskeyword(print)
False

>>> keyword.iskeyword('print')
False

>>> keyword.iskeyword('def')
True

>>> keyword.iskeyword('class')
True

 

isnumeric()unicode对象字符串是否只由数字组成

>>> s = '123'
>>> s.isnumeric()
True

>>> s = 'u'
>>> s.isnumeric()
False

 

isprintable()是否为可打印字符串

>>> s = 'hah'
>>> s.isprintable()
True

>>> s = '123'
>>> s.isprintable()
True

 

startswith(prefix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。

>>> s = 'ewfwefew23f3w2e'

>>> s.startswith('q')
False

>>> s.startswith('e')
True

>>> s.startswith('e',4)
True

>>> s.startswith('e',3,5)
False

 

endswith(suffix, start, end):字符串是否是以prefix指代的字符串开始,可以指定开始、结束范围。

>>> s = 'ewfwefew23f3w2e'

>>> s.endswith('e')
True

>>> s.endswith('e',3,7)
True

>>> s.endswith('e',3,9)
False

 

关于isdigit、isdecimal、isnumeric的区别:

isdigit():
True:unnicode数字、byte数字(单字节)、全角数字(双字节)
False:汉字数字、罗马数字
error:无

isdecimal():
True:unnicode数字、全角数字(双字节)
False:汉字数字、罗马数字
error:byte数字(单字节)

isnumeric():
True:unnicode数字、汉字数字、全角数字(双字节)
False:罗马数字
error:byte数字(单字节)

>>> s = '123'     #unicode

>>> s.isdigit()
True

>>> s.isdecimal()
True

>>> s.isnumeric()
True



>>> s = '123'     #全角(双字节)

>>> s.isdigit()
True

>>> s.isdecimal()
True

>>> s.isnumeric()
True



>>> s = b'1'     #bytes数字

>>> s.isdigit()
True

>>> s.isdecimal()
Traceback (most recent call last):
  File "", line 1, in 
    s.isdecimal()
AttributeError: 'bytes' object has no attribute 'isdecimal'

>>> s.isnumeric()
Traceback (most recent call last):
  File "", line 1, in 
    s.isnumeric()
AttributeError: 'bytes' object has no attribute 'isnumeric'



s = 'II'     #罗马数字

>>> s.isdigit()
False

>>> s.isdecimal()
False

>>> s.isnumeric()
False


>>> s = '四'     #汉字数字

>>> s.isdigit()
False

>>> s.isdecimal()
False

>>> s.isnumeric()
True

 

你可能感兴趣的:(python)