- 1 字符串查询(index,find)
- 2. 字符串大小写转换操作(upper、lower、swapcase、capitalize和title)
- 3. 字符串对齐(center,just和zfill)
- 4. 分割字符串(split、splitlines和partition)
- 5. 合并与替换(join,replace)
- 6. 判断字符串(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)
- 7. 字符串的比较(<,>,max,min等)
- 8. 去除两端多余字符操作(strip)
- 9. 判断开头结尾字符串(startswith,endswith)
- 10. 字符串计数(count,len)
- 11. 字符串的编码与解码(encode,decode)
建议使用find,因为如果没有找到匹配的字符串,index方法会报异常。
| 方法名称 | 功能 |
|---|---|
| find(str, beg=0, end=len(string)) | 查找子串str第一次出现的位置,如果找到则返回相应的索引,否则返回-1 |
| rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找 |
| index(str, beg=0, end=len(string)) | 类似于find,只不过如果没找到会报异常。 |
| rindex(str, beg=0 end=len(string)) | 类似于rfind,如果没有匹配的字符串会报异常 |
代码举例
str1 = "my name is qlee,what your name?" str2 = "name" print(str1.find(str2))#全部查找 print(str1.find(str2,5))#从第5个元素开始查找 print(str1.find(str2,35))# 从第35个元素开始查找,超过元素索引或者没找到,不会报错
输出:
3 26 -12. 字符串大小写转换操作(upper、lower、swapcase、capitalize和title)
| 方法名称 | 功能 |
|---|---|
| upper | 将字符串中所有元素都转为大写 |
| lower | 将字符串中所有元素都转为小写 |
| swapcase | 交换大小写。大写转为小写,小写转为大写 |
| capitalize | 第一个大写,其余小写 |
| title | 每个单词的第一次字符大写,其余均为小写 |
代码举例:
txt = "my name is Qlee" print(txt.upper()) print(txt.lower()) print(txt.swapcase()) print(txt.capitalize()) print(txt.title())
输出:
MY NAME IS QLEE my name is qlee MY NAME IS qLEE My name is qlee My Name Is Qlee3. 字符串对齐(center,just和zfill)
| 方法名称 | 功能 |
|---|---|
| center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 |
| ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
| rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
| zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
代码举例:
str = "hello world!" print (str.center(30, '*')) print (str.ljust(30, '*')) print (str.rjust(30, '*')) print (str.zfill(30))
输出:
*********hello world!********* hello world!****************** ******************hello world! 000000000000000000hello world!4. 分割字符串(split、splitlines和partition)
| 方法名称 | 功能 |
|---|---|
| split(seq="", num=string.count(str)) | 以 seq (默认空格)为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串(只需num个seq分隔符)。分割后得到新列表 |
| rsplit | 与split类似,不过是从右边开始分割 |
| splitlines | 按照行进行分割,得到新的列表 |
| partition(str) | 找到字符串中第一个str,并以str为界,将字符串分割为3部分,返回一个新的元组 |
| rpartition(str) | 与partition类似,只不过是反向找 |
代码举例:
str = "my name is qlee, what is your name"
print(str.split()) # 以空格为分隔符
print(str.split('i',1)) # 以 i 为分隔符
print(str.split('b')) # 以b为分隔符,没找到不会报错
print(str.partition("name"))#找到第一个name,分割为三部分
print(str.rpartition("name"))#反向找到第一个name,分割为三部分
str = """my name is qlee
what is your name"""
print(str.splitlines())
输出:
['my', 'name', 'is', 'qlee,', 'what', 'is', 'your', 'name']
['my name ', 's qlee, what is your name']
['my name is qlee, what is your name']
('my ', 'name', ' is qlee, what is your name')
('my name is qlee, what is your ', 'name', '')
['my name is qlee', ' what is your name']
5. 合并与替换(join,replace)
| 方法名称 | 功能 |
|---|---|
| join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
| replace(old, new [, max]) | 把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次 |
代码举例:
print("----------join-----------")
seq1 = ("h", "e", "l", "l", "o") #元组
seq2 = ["h", "e", "l", "l", "o"] #列表
seq3 = "hello" #字符串
print ("".join(seq1)) #无分隔符
print (" ".join(seq1))#空格
print (",".join(seq1))#","
print("----------replace-----------")
str = "my name is qlee"
print (str.replace("qlee", "lq"))
输出:
----------join----------- hello h e l l o h,e,l,l,o ----------replace----------- my name is lq6. 判断字符串(isidentifier、isspace、isalpha、isdecimal、isnumeric和isalnum等)
| 方法名称 | 功能 |
|---|---|
| isidentifier | 判断字符串是不是合法标识符(字符、数字、下划线) |
| isspace | 判断字符是否只有空白字符(回车、换行和水平制表符) |
| isalpha | 判断字符串是否全部由字母组成 |
| isdecimal | 判断字符是否全部由十进制的数字组成,不包括中文、罗马字符 |
| isdigit | 判断字符串只包含数字,不包括中文数字 |
| isnumeric | 判断字符串是否全部由数字组成,中文数字也算 |
| isalnum | 判断字符串是否由字母和数字组成 |
| islower | 判断字符串中的字符是否全部为小写,字符串至少有一个字符 |
| isupper | 判断字符串中的字符是否全部为大写,字符串至少有一个字符 |
| istitle | 判断字符串是否标题话,见titile |
| isascii | 如果字符串为空或字符串中的所有字符都是 ASCII,则返回 True,否则返回 False。 |
| isprintable | 如果所有字符都是可打印的,则 isprintable() 方法返回 True,否则返回 False。 |
举例说明:
print("hello&".isidentifier())#False,&为非法标识符
print(" t".isspace())#False,"t"为非空
print("aldflafd你好".isalpha())#ture,中文也可以
print("123四".isdecimal())#False,中文不属于十进制
print("123四".isnumeric())#True,中文、罗马字符的数字也算
print("123abc".isalnum())#True,只能字母和数字
print("123四".isdigit())#False,不能包括中文
print("".islower())# False,不能为空字符
print("TLUHBH".isupper())#True
print("My Name Is Qlee".istitle())#True,只有第一个字符为大写
print("我是中国人".isascii())#False,中文不属于ascii
print("Hello!nAre you ?".isprintable()) #False,n不可打印
7. 字符串的比较(<,>,max,min等)
字符串的比较操作:
- 运算符:> , >=, <, <=, ==, !=
- 比较规则:从第一个以此往下比较。
- 比较原理:比较的是oridinal value(原始值)
| 方法名称 | 功能 |
|---|---|
| max(str) | 返回字符串 str 中最大的字母 |
| min(str) | 返回字符串 str 中最小的字母 |
| ord | 将指定字符转换为原始值 |
| chr | 将原始值转换为对应的字符 |
举例说明:
str = "mynameisqlee"
print("max(str): ", max(str),"min(str): ", min(str))
print("hello" < "Hello")
print(ord("c"))
print(chr(98))
输出:
max(str): y min(str): a False 99 b8. 去除两端多余字符操作(strip)
| 方法名称 | 功能 |
|---|---|
| lstrip(str) | 去掉左边的str字符(不是字符串),默认为空白字符 |
| rstrip(str) | 去掉右边的str字符 |
| strip(str) | 去掉左右两边的str字符 |
代码举例:
str = " my name is qleeeeee"
print(str.strip()) #去掉两边的空白
print(str.rstrip("e")) #去掉右边的"e"字符
str = "!!!!my name is qlee!!!!"
print(str.strip("!")) #去掉左右边的"!"字符
输出:
my name is qleeeeee my name is ql my name is qlee9. 判断开头结尾字符串(startswith,endswith)
| 方法名称 | 功能 |
|---|---|
| startswith(str) | 检查字符串是否以str开头,若是则返回true |
| endswith(str) | 检查字符串是否以str结尾,若是则返回true |
代码距离:
str = "my name is qlee"
print(str.startswith("my"))#True
print(str.endswith("is"))#False
10. 字符串计数(count,len)
| 方法名称 | 功能 |
|---|---|
| count(sub, start= 0,end=len(string)) | 在字符串[start,end)范围内,计算sub字符串的个数 |
| len | len不是string的方法,是内置函数,计算字符串中的字符个数 |
代码举例:
str = "my name is qlee, what is your name?"
print(str.count("name")) #2
print(len(str))# 35
11. 字符串的编码与解码(encode,decode)
| 方法名称 | 功能 |
|---|---|
| encode(encoding=‘UTF-8’,errors=‘strict’) | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’ |
| bytes.decode(encoding=“utf-8”, errors=“strict”) | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回 |
代码举例:
str = "我是中国人"
str_utf8 = str.encode("UTF-8")
str_gbk = str.encode("GBK")
print("原字符串:",str)
print("------------编码---------------")
print("UTF-8 编码:", str_utf8)
print("GBK 编码:", str_gbk)
print("------------解码---------------")
print("UTF-8 解码:", str_utf8.decode('UTF-8', 'strict'))
print("GBK 解码:", str_gbk.decode('GBK', 'strict'))
输出:
原字符串: 我是中国人 ------------编码--------------- UTF-8 编码: b'xe6x88x91xe6x98xafxe4xb8xadxe5x9bxbdxe4xbaxba' GBK 编码: b'xcexd2xcaxc7xd6xd0xb9xfaxc8xcb' ------------解码--------------- UTF-8 解码: 我是中国人 GBK 解码: 我是中国人



