Python学习笔记 - str 字符串
[TOC]
字符串的形式
- ‘content’
- “content”
- ‘’’multiline content’’’
使用引号引起来的内容为字符串,单引号和双引号引起来的字符串含义完全一样,在内部需要一种字符串时在外部使用另一种字符串即可。
使用三个引号引起来的内容为多行字符串,三个单引号和三个双引号的含义完全一样。单行字符串不能跨行定义而多行字符串可以。
字符串是「只读」的,一切方法都是返回一个新的字符串而不会改变这个字符串。
转义
格式化字符串
百分号格式化(尽量不要再使用)
大括号格式化
- 在字符串中传入若干个
{}
标识符或使用命名的标识符{str}
,然后通过.format
或.format_map
方法传入参数可以进行格式化输出 - 使用
.format
方法格式化时,不命名的格式化标识符应该先依次传入,然后再将命名的标识符传入,传入时所命的名需要作为方法参数的 keyå - 使用
.format_map
方法时必须传入标识符,这个方法接收一个以所命名为键格式化替换值为值的字典
1 | s = "Hello, {}. I'm {}" |
字符串的切割与合并
切片
与列表、元组的切片相同
split 方法
.split
方法接收两个参数,会返回一个使用第一个参数作为分割符的列表,分割次数为第二个参数。省略第一个参数则默认使用空白符分割,省略第二个参数则认为完全分割。
1 | s = 'Hello, this is Singee' |
rsplit 方法
.rsplit
方法和 split
在只有第一个参数时相同,在拥有第二个参数时,分割模式为从右到左分割。
1 | s = 'Hello, this is Singee' |
join 方法
str1.join([str2, str3, ...])
会将 str2
、str3
等通过 str1
连接起来
1 | ''.join(['m', 'n', 'o']) # 'mno' |
应用:去除一个字符串中的全部空格
''.join(s.split())
1 | s = ' adf ja adf ad ' |
字符串查找
count 方法
.count(str)
方法用于统计字符串中指定字符串出现的次数
1 | s = 'abccdddeeeeddf' |
in 操作符
str1 in str2
,如果 str2
中含有 str1
,则返回 True
,否则返回 False
1 | s = 'abcd' |
find 方法
.find(str)
方法会返回传入的字符串在原字符串中第一次出现的位置(第一个位置为 0),找不到会返回 -1
此方法可以接受第二个与第三个参数,第二个参数为搜寻开始的位置(包含),第三个参数为搜寻结束的位置(不包含)
1 | s = 'abbaabbba' |
rfind 方法
.rfind(str)
方法会返回传入的字符串在原字符串中最后一次出现的位置(第一个位置为 0),找不到会返回 -1
此方法可以接受第二个与第三个参数,第二个参数为搜寻开始的位置(包含),第三个参数为搜寻结束的位置(不包含)
1 | s = 'abbaabbba' |
index 方法
.index(str)
方法和 find
类似,但是 index
如果找不到这个字符串的话会报错
rindex 方法
.rindex(str)
方法和 rfind
类似,但是 rindex
如果找不到这个字符串的话会报错
startswith 方法
需要传入一个字符串作为一个参数,如果原字符串是以这个字符串开头的则返回 True
,否则返回 False
1 | a = 'test123and' |
endswith 方法
需要传入一个字符串作为一个参数,如果原字符串是以这个字符串结尾的则返回 True
,否则返回 False
1 | a = 'test123and' |
字符串替换(replace 方法)
.replace()
方法接受三个参数,第一个参数为被替换的字符串,第二个参数为替换为的字符串,第三个参数为替换的次数(默认为全部替换)
1 | s = 'abcdabcdabcd' |
字符串的大小写转换
lower 方法
将字符串中的全部字符转换为小写
1 | a = 'Hello. How are you?' |
upper 方法
将字符串中的全部字符转换为大写
1 | a = 'Hello. How are you?' |
capitalize 方法
将字符串的第一个字符变为大写,其余变为小写
1 | s = 'hello,World!' |
swapcase 方法
将字符串的所有字符的大小写反转
1 | s = 'hello,World!' |
casefold 方法(非常不常用)
将字符串中的全部字符转换为小写
1 | a = 'Hello. How are you?' |
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”.
title 方法
当字符串中有多个单词时,将每个单词的首字母大写而其他的小写。
1 | 'mOre ThAn this'.title() # 'More Than This' |
判断字符串类型
isalnumber 方法
如果此字符串中只有单字节字符和数字则返回 True
否则返回 False
1 | 'abc123'.isalnum() # True |
isalpha 方法
如果此字符串中只有单字节字符则返回 True
否则返回 False
1 | 'abc'.isalpha() # True |
islower 方法
如果字符串中只有小写字符则返回 True
否则返回 False
1 | 'abc'.islower() # True |
isupper 方法
如果字符串中只有大写字符则返回 True
否则返回 False
1 | 'ABC'.isupper() # True |
isdigit 方法
如果此字符串中只有数字则返回 True
否则返回 False
对于 Unicode 数字,byte数字(单字节),全角数字(双字节)会返回 True
,而对于罗马数字和汉字数字会返回 False
。
1 | '123'.isdigit() # True |
isdecimal 方法
检查字符串是否只包含十进制字符
对于 Unicode 数字、全角数字(双字节)会返回 True
,而对于罗马数字和汉字数字会返回 False
。byte数字(单字节)无此方法。
1 | '123'.isdecimal() # True |
isnumeric 方法
检查字符串是否为数字
对于 Unicode 数字、全角数字(双字节)、罗马数字和汉字数字会返回 True
,其他会返回 False
。byte数字(单字节)无此方法。
1 | '123'.isnumeric() # True |
isspace 方法
判断字符串内容是否全是空白符(空格、制表符、换行、回车等),是则返回 True
否则返回 False
1 | ' \t\r\n'.isspace() # True |
isidentifier 方法
判断字符串内容是否符合变量名条件,即满足以下条件:
- 只包含字母、数字、下划线(实际上中文等也可以)
- 不以数字开头
- 可以使用保留字
istitle 方法
当字符串中至少有一个字母,且多个用空白符分割的单词满足以大写字母开头后接小写字母则返回 True
,否则返回 False
去除字符串开头结尾的指定字符
strip 方法
.strip(chars=None)
要求提供一个字符串(不提供默认为空白符),执行后会返回一个新的字符串,此字符串前后没有 chars
参数所提供的字符串中的任何一个字符。
1 | s = ' \n \t \nasdfa \n \t\r\n' |
lstrip 方法
与 strip 类似,不过只去除左侧的字符
rstrip 方法
与 strip 类似,不过只去除右侧的字符
字符串的对齐方法
center 方法
.center(width[, char])
返回长度为 width 的字符串,字符串左右使用尽可能相同的char
参数提供的字符填充。- 不提供
char
参数则默认为空格 - 当
width
参数小于等于原字符串的长度时,原样返回 - 无法使左右字符数相等时候,左侧字符会比右侧少 1
1 | a = 'hello' |
ljust 方法
.ljust(width[, char])
返回长度为 width 的字符串,字符串右边使用char
参数提供的字符填充。- 不提供
char
参数则默认为空格 - 当
width
参数小于等于原字符串的长度时,原样返回
1 | a = 'hello' |
rjust 方法
.rjust(width[, char])
返回长度为 width 的字符串,字符串左边使用char
参数提供的字符填充。- 不提供
char
参数则默认为空格 - 当
width
参数小于等于原字符串的长度时,原样返回
1 | a = 'hello' |
字符串的其他方法
expandtabs 方法
.expandtabs(tabsize)
方法可以把字符串中的 \t
转为空格,tab 符号(‘\t’)默认的空格数是 7。