Python3 扩展教程 —— 字符串的方法及注释

Python3 扩展教程

Python字符串的方法及注释

方法 描述 示例
capitalize() 把字符串的第一个字符改为大写
>>> "abc".capitalize()
'Abc
casefold() 把整个字符串的所有字符改为小写
>>> 'ABC'.casefold()
'abc'
center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串
>>> 'ABC'.center(10)
'   ABC    '
count(sub[, start[, end]]) 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可选。
>>> 'abcdefaabc'.count('a')
3
>>> 'abcdefaabc'.count('a',5)
2
encode(encoding='utf-8', errors='strict') 以 encoding 指定的编码格式对字符串进行编码。
>>> 'abc'.encode()
b'abc'
endswith(sub[, start[, end]]) 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
>>> 'abcdefg'.endswith('fg')
True
expandtabs([tabsize=8]) 把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8。
>>> 'I\tLove\tchengxumiao.net'.expandtabs()
'I       Love    chengxumiao.net'
>>> 'I\tLove\tYou'.expandtabs(3)
'I  Love  You'
find(sub[, start[, end]]) 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
>>> 'abcdefg'.find('c')
2
index(sub[, start[, end]]) 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
>>> 'abcdefg'.index('c')
2
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
>>> 'abc@123'.isalnum()
False
>>> 'abc123'.isalnum()
True
isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
>>> 'abc'.isalpha()
True
isdecimal() 如果字符串只包含十进制数字则返回 True,否则返回 False。
>>> '123'.isdecimal()
True
>>> '0xFF'.isdecimal()
False
isdigit() 如果字符串只包含数字则返回 True,否则返回 False。
>>> '123'.isdigit()
True
islower() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。
>>> 'abc'.islower()
True
isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
>>> '1234567890'.isnumeric()
True
isspace() 如果字符串中只包含空格,则返回 True,否则返回 False。
>>> '   '.isspace()
True
istitle() 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False。
>>> 'Abc'.istitle()
True
isupper() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。
>>> 'ABC'.isupper()
True
join(sub) 以字符串作为分隔符,插入到 sub 中所有的字符之间。
>>> 'abcdef'.join("123")
'1abcdef2abcdef3'
ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> 'ABC'.ljust(10)
'ABC       '
lower() 转换字符串中所有大写字符为小写。
>>> 'ABC'.lower()
'abc
lstrip() 去掉字符串左边的所有空格
>>> '  ABC  '.lstrip()
'ABC  '
partition(sub) 找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 ('原字符串', '', '')
>>> 'abcdef'.partition('cde')
('ab', 'cde', 'f')
replace(old, new[, count]) 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
>>> 'abcdefg'.replace('cde','123')
'ab123fg'
rfind(sub[, start[, end]]) 类似于 find() 方法,不过是从右边开始查找。
>>> 'abcdefg'.rfind('f')
5
rindex(sub[, start[, end]]) 类似于 index() 方法,不过是从右边开始。
>>> 'abcdefg'.rindex('e')
4
rjust(width) 返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
>>> 'ABC'.rjust(10)
'       ABC'
rpartition(sub) 类似于 partition() 方法,不过是从右边开始查找。
>>> 'abcdefg'.rpartition('ef')
('abcd', 'ef', 'g')
rstrip() 删除字符串末尾的空格。
>>> '  BAC  '.rstrip()
'  BAC'
split(sep=None, maxsplit=-1) 不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔 maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
>>> 'abc cba abc'.split()
['abc', 'cba', 'abc']
>>> 'abc,cba,abc'.split(',')
['abc', 'cba', 'abc']
splitlines(([keepends])) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,默认参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符
>>> 'abc\ndef\t123'.splitlines()
['abc', 'def\t123']
>>> 'abc\ndef\rgh\r\n123'.splitlines()
['abc', 'def', 'gh', '123']
>>> 'abc\ndef\rgh\r\n123'.splitlines(True)
['abc\n', 'def\r', 'gh\r\n', '123']
startswith(prefix[, start[, end]]) 检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
>>> 'abcdef'.startswith('ab')
True
strip([chars]) 删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
>>> '  ABC  '.strip()
'ABC'
swapcase() 翻转字符串中的大小写。
>>> 'aBc'.swapcase()
'AbC'
title() 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
>>> "abc".title()
'Abc'
translate(table) 根据 table 的规则(可以由 str.maketrans('a', 'b') 定制)转换字符串中的字符。a和b的长度必须相等
'abcabcabc'.translate(str.maketrans('b','k'))
'akcakcakc'
upper() 转换字符串中的所有小写字符为大写。
>>> 'abc'.upper()
'ABC'
zfill(width) 返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。
>>> 'ABC'.zfill(10)
'0000000ABC'

问题小结

capitalize()和title()之间的区别?

>>> '2abc def bcd'.capitalize()
'2abc def bcd'
>>> '2abc'.title()
'2Abc Def Bcd'

string.casefold和string.lower 区别

python 3.3 引入了string.casefold 方法,其效果和 string.lower 非常类似,都可以把字符串变成小写,那么它们之间有什么区别?他们各自的应用场景?

对 Unicode 的时候用 casefold

string.casefold官方说明:

Casefolding is similar to lowercasing but more aggressive because it is intended to remove all case distinctions in a string. For example, the German lowercase letter 'ß' is equivalent to "ss". Since it is already lowercase, lower() would do nothing to 'ß'casefold()converts it to "ss".

The casefolding algorithm is described in section 3.13 of the Unicode Standard

 

lower() 只对 ASCII 也就是 'A-Z'有效,但是其它一些语言里面存在小写的情况就没办法了。文档里面举得例子是德语中'ß'的小写是'ss'

s = 'ß' 
s.lower() # 'ß' 
s.casefold() # 'ss'

string.lower官方说明:

Return a copy of the string with all the cased characters [4] converted to lowercase.

The lowercasing algorithm used is described in section 3.13 of the Unicode Standard 

未经允许请勿转载:程序喵 » Python3 扩展教程 —— 字符串的方法及注释

点  赞 (1) 打  赏
分享到: