python中字符串对象提供了很多方法来操作字符串,功能相当丰富。
print(dir(str))
[..........'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
这里没有模式匹配(正则)相关的功能。python中要使用模式匹配相关的方法操作字符串,需要import re
导入re模块。关于正则模式匹配
注意,python中字符串是不可变对象,所以所有修改和生成字符串的操作的实现方法都是另一个内存片段中新生成一个字符串对象。例如,'abc'.upper()
将会在划分另一个内存片段,并将返回的ABC
保存在此内存中。
下文出现的"S"表示待操作的字符串。本文没有对casefold,encode,format,format_map
进行介绍,前两者和unicode有关,后两者内容有点太多。
1.大小写转换
1.1 lower、upper
S.lower()
S.upper()
返回S字符串的小写、大写格式。(注意,这是新生成的字符串,在另一片内存片段中,后文将不再解释这种行为)
例如:
>>> print('ab XY'.lower()) ab xy >>> print('ab XY'.upper()) AB XY
1.2 title、capitalize
S.title()
S.capitalize()
前者返回S字符串中所有单词首字母大写且其他字母小写的格式,后者返回首字母大写、其他字母全部小写的新字符串。
例如:
>>> print('ab XY'.title()) Ab Xy >>> print('abc DE'.capitalize()) Abc de
1.3 swapcase
S.swapcase()
swapcase()
对S中的所有字符串做大小写转换(大写-->小写,小写-->大写)。
>>> print('abc XYZ'.swapcase()) ABC xyz
2.isXXX判断
2.1 isalpha,isdecimal,isdigit,isnumeric,isalnum
S.isdecimal()
S.isdigit()
S.isnumeric()
S.isalpha()
S.isalnum()
测试字符串S是否是数字、字母、字母或数字。对于非Unicode字符串,前3个方法是等价的。
例如:
>>> print('34'.isdigit()) True >>> print('abc'.isalpha()) True >>> print('a34'.isalnum()) True
2.2 islower,isupper,istitle
S.islower()
S.isupper()
S.istitle()
判断是否小写、大写、首字母大写。要求S中至少要包含一个字符串字符,否则直接返回False。例如不能是纯数字。
注意,istitle()
判断时会对每个单词的首字母边界判断。例如,word1 Word2
、word1_Word2
、word1()Word2
中都包含两个单词,它们的首字母都是"w"和"W"。因此,如果用istitle()
去判断它们,将返回False,因为w
是小写。
例如:
>>> print('a34'.islower()) True >>> print('AB'.isupper()) True >>> print('Aa'.isupper()) False >>> print('Aa Bc'.istitle()) True >>> print('Aa_Bc'.istitle()) True >>> print('Aa bc'.istitle()) False >>> print('Aa_bc'.istitle()) False # 下面的返回False,因为非首字母C不是小写 >>> print('Aa BC'.istitle()) False
2.3 isspace,isprintable,isidentifier
S.isspace()
S.isprintable()
S.isidentifier()
分别判断字符串是否是空白(空格、制表符、换行符等)字符、是否是可打印字符(例如制