python_字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
字符串常用内建函数【str='abcdefg'】
str.capitalize():将字符串的第一个字符转换为大写
print(str.capitalize()) # Abcdefg
str.title():返回"标题化"的字符串,就是说所有单词的首个字母转化为大写,其余字母均为小写
print('ab cd rfg'.title()) # Ab Cd Rfg
str.istitle():检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
print('This Is String Example...Wow!!!'.istitle()) # true
str.count(sub, start= 0,end=len(string)):返回子字符串在字符串中出现的次数。
- sub -- 搜索的子字符串。
- start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
- end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
print(str.count('e',0,7)) # 1
str.join(sequence):用于将序列中的元素以指定的字符连接生成一个新的字符串。
- sequence -- 要连接的元素序列。
print('-'.join(str)) # a-b-c-d-e-f-g
str.split(str="", num=string.count(str)):通过指定分隔符对字符串进行切片,该方法将字符串分割成子字符串并返回一个由这些子字符串组成的列表。如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
- str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数,如果设置了这个参数,则最多分割成 maxsplit+1 个子字符串。默认为 -1, 即分隔所有。
print(str.split('c',3)) # ['ab', 'defg']
str.splitlines([keepends]):按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符
- keepends -- 在输出结果里是否去掉换行符('\r', '\r\n', \n'),默认为 False,不包含换行符,如果为 True,则保留换行符。
print('ab\ncd\rvv'.splitlines()) # ['ab', 'cd', 'vv']
str.strip([chars]):用于移除字符串头尾指定的字符(默认为空格)或字符序列。
- chars -- 移除字符串头尾指定的字符序列。
- 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
print(str.strip('ab')) # cdefg
print(str.strip('f')) # abcdefg
str.lstrip([chars]):用于截掉字符串左边的空格或指定字符。
- chars(可选):指定要移除的字符集合(字符串形式)。如果省略或为 None,默认移除空白字符(空格、\t、\n、\r、\v、\f)。
- 注意:chars 是字符集合,不是完整前缀。方法会从左侧开始移除所有在 chars 中出现的字符,直到遇到不在集合中的字符为止。
print(' str'.lstrip(' ')) # str 移除左侧空白字符
print('abcde'.lstrip('ab')) # cde 移除左侧指定字符
print('abcdefg'.lstrip('cab')) # defg 字符集合顺序无关
str.rstrip([chars]):删除 string 字符串末尾的指定字符,默认为空白符,包括空格、换行符、回车符、制表符。
- chars -- 指定删除的字符(默认为空白符)
print('abc is abc'.rstrip('bc')) # abc is a
str.startswith(substr, beg=0,end=len(string)):用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
- str -- 检测的字符串。
- substr -- 指定的子字符串。
- strbeg -- 可选参数用于设置字符串检测的起始位置。
- strend -- 可选参数用于设置字符串检测的结束位置。
print(str.startswith('ab')) # true
print(str.startswith('ab',2)) # false
str.endswith(suffix[, start[, end]]):用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 "start" 与 "end" 为检索字符串的开始与结束位置。
print(str.endswith('g',0,15)) # true
str.find(str, beg=0, end=len(string)):如果包含子字符串返回开始的索引值,否则返回-1。
- str -- 指定检索的字符串。
print(str.find('ef',1)) # 4
str.rfind(str, beg=0, end=len(string)):返回字符串最后一次出现的位置,如果没有匹配项则返回-1。
- str -- 查找的字符串。
- beg -- 开始查找的位置,默认为0。
- end -- 结束查找位置,默认为字符串的长度。
print('abcabcddabcabc'.rfind('ab')) # 11
print('abcabcddabcabc'.rfind('ab',0,5)) # 3
str.replace(old, new[, max]):把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
- old -- 将被替换的子字符串。
- new -- 新字符串,用于替换old子字符串。
- max -- 可选字符串, 替换不超过 max 次
print('abcabcabc'.replace('ab','cd',1)) # cdcabcabc
str.lower():转换字符串中所有大写字符为小写。
print('AAA'.lower()) # aaa
str.islower():检测字符串是否由小写字母组成。
print('aaA'.islower()) # false 可以用来检测字符串是否不包含大写字母
print('aaa你好'.islower()) # true
str.upper():将字符串中的小写字母转为大写字母。
print(str.upper()) # ABCDEFG
str.isupper():检测字符串中所有的字母是否都为大写。
print('AB'.isupper()) # true
str.isdigit():检测字符串是否只由数字组成。
- isdigit() 方法只对正整数有效,负数及小数均返回不正确。
print('检测字符串是否只由数字组成。','111'.isdigit()) # true
print('检测字符串是否只由数字组成。','111.11'.isdigit()) # false
print('检测字符串是否只由数字组成。','-222'.isdigit()) # false
str.isalnum():用于检查字符串是否由字母和数字组成,即字符串中的所有字符都是字母或数字。
- 空字符串:如果字符串为空(长度为0),则返回 False,因为空字符串不包含任何字母或数字。
- 大小写敏感:isalnum() 方法区分大小写,即只有字母和数字的字符才会被认为是有效的。
- 特殊字符:特殊字符(如标点符号、空格、特殊符号等)不被认为是字母或数字。
print(str.isalnum()) # true
print('汉字','abc汉字'.isalnum()) # true
str.isalpha():检测字符串是否只由字母或文字组成。
- 空字符串:如果字符串为空(长度为0),则返回 False,因为空字符串不包含任何字母。
- 大小写敏感:isalpha() 方法区分大小写,即只有字母的字符才会被认为是有效的。
- 特殊字符:特殊字符(如标点符号、空格、数字、特殊符号等)不被认为是字母。
print(str.isalpha()) # true
print('汉字1','abc汉字'.isalnum()) # true
str.center(width[, fillchar]):返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充。
- width -- 字符串的总宽度。
- fillchar -- 填充字符。
print(str.center(18,'-')) # -----abcdefg------
bytes.decode(encoding="utf-8", errors="strict"):该方法返回解码后的字符串。str.encode(encoding='UTF-8',errors='strict'):该方法返回编码后的字符串,它是一个 bytes 对象。
- encoding -- 要使用的编码,如"UTF-8"。
- errors -- 设置不同错误的处理方案。默认为 'strict',意为编码错误引起一个UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通过 codecs.register_error() 注册的任何值。
str1='哈喽'
str_utf8=str1.encode('utf-8')
str_gbk=str1.encode('GBK')
print('utf-8编码',str_utf8) # utf-8编码 b'\xe5\x93\x88\xe5\x96\xbd'
print('gbk编码',str_gbk) # gbk编码 b'\xb9\xfe\xe0\xb6'
print('utf-8解码',str_utf8.decode('utf-8','strict')) # utf-8解码 哈喽
print('gbk解码',str_gbk.decode('gbk','strict')) # gbk解码 哈喽
- UTF-8 和 GBK 的区别
-
先给结论:现在基本都用 UTF-8,建议采用这个。
-
GB 指代的“国标”,即“国家标准”。
-
UTF-8 是一种国际化的编码方式,包含了世界上大部分的语种文字(简体中文字、繁体中文字、英文、日文、韩文等语言),也兼容 ASCII 码。
-
GBK 是在国家标准 GB2312 基础上扩容后兼容 GB2312 的标准(好像还不是国家标准),专门用来解决中文编码的,是双字节的,不论中英文都是双字节的。
-
UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用 8 位(即一个字节),中文使用 24 位(三个字节)来编码。
-
对于英文字符较多的论坛则用 UTF-8 节省空间。
-
另外,如果是外国人访问你的 GBK 网页,需要下载中文语言包支持。访问 UTF-8 编码的网页则不出现这问题,可以直接访问。
-
GBK 包含全部中文字符。
-
UTF-8 则包含全世界所有国家需要用到的字符。
-
str.expandtabs(tabsize=8):该方法返回字符串中的 tab 符号 \t 转为空格后生成的新字符串。
- tabsize -- 指定转换字符串中的 tab 符号 \t 转为空格的字符数。
print('a\tb\tc\td\t'.expandtabs(4)) # a b c d
str.index(str, beg=0, end=len(string)):跟find()方法一样,只不过如果str不在字符串中会报一个异常。 如果包含子字符串返回开始的索引值,否则抛出异常。
print(str.index('abc')) # 0
print(str.index('abc')) # 报错
str.isnumeric():检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。 指数类似 ² 与分数类似 ½ 也属于数字。
print('isnumeric','123'.isnumeric()) # true
str.isdecimal():检查字符串是否只包含十进制字符。
print('aaa'.isdecimal()) # false
print('111'.isdecimal()) # true
str.isspace():检测字符串是否只由空白字符组成。 空白符包含:空格、制表符(\t)、换行(\n)、回车(\r)等。 空串不算空白符
print('检测字符串是否只由空白字符组成。',' '.isspace()) # true
print(''.isspace()) # false
len(string):返回字符串长度
print('len',len(str)) # 7
str.ljust(width[, fillchar]):返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
- width -- 指定字符串长度。
- fillchar -- 填充字符,默认为空格。
print(str.ljust(10,'-')) # abcdefg---
str.rjust(width[, fillchar]):返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
- width -- 指定填充指定字符后中字符串的总长度。
- fillchar -- 填充的字符,默认为空格。
print(str.rjust(10,'-')) # ---abcdefg
str.translate(table) | bytes.translate(table[, delete]) | bytearray.translate(table[, delete]):根据参数 table 给出的表(包含 256 个字符)转换字符串的字符,要过滤掉的字符放到 deletechars 参数中。
- table -- 翻译表,翻译表是通过 maketrans() 方法转换而来。
- deletechars -- 字符串中要过滤的字符列表。
string.maketrans(x[, y[, z]]):用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。返回字符串转换后生成的新字符串。
- 使用字符串设置要替换的字符,一一对应
intab='aeiou'
outtab='12345'
trantab=str.maketrans(intab,outtab)
str2='this is string example....wow!!!'
print(str2.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!
max(str):返回字符串中最大的字母。
print(max(str)) # g
min(str):返回字符串中最小的字母。
print(min(str)) # a
str.rindex(str, beg=0 end=len(string)):返回子字符串 str 在字符串中最后出现的位置,如果没有匹配的字符串会报异常,你可以指定可选参数[beg:end]设置查找的区间。
- str -- 查找的字符串;
- beg -- 开始查找的位置,默认为0;
- end -- 结束查找位置,默认为字符串的长度。
print('abcabcddabcabc'.rindex('ab',0,5)) #3
str.swapcase():用于对字符串的大小写字母进行转换,即将大写字母转换为小写字母,小写字母会转换为大写字母。
print('aBcDefG'.swapcase()) # AbCdEFg
str.zfill(width):返回指定长度的字符串,原字符串右对齐,前面填充0。
- width -- 指定字符串的长度。原字符串右对齐,前面填充0。
print(str.zfill(10)) # 000abcdefg
字符串更新
截取字符串的一部分并与其他字段拼接。
var1 = 'Hello World!'
print ("已更新字符串 : ", var1[:6] + 'Runoob!')
访问字符串中的值
访问子字符串,可以使用方括号 [] 来截取字符串:变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
var1 = 'Hello World!'
var2 = "Runoob"
print("var1[0]: ", var1[0]) # var1[0]: H
print("var2[1:5]: ", var2[1:5]) # var2[1:5]: unoo
转义字符
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。
| 转义字符 | 描述 |
|---|---|
| (在行尾时) | 续行符 |
\\ |
反斜杠符号 |
\' |
单引号 |
\" |
双引号 |
\a |
响铃 |
\b |
退格(Backspace) |
\000 |
空 |
\n |
换行 |
\v |
纵向制表符 |
\t |
横向制表符 |
\r |
回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。 |
\f |
换页 |
\yyy |
八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
\xyy |
十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行 |
\other |
其它的字符以普通格式输出 |
字符串运算符
| 操作符 | 描述 |
|---|---|
| + | 字符串连接 |
| * | 重复输出字符串 |
| [] | 通过索引获取字符串中字符 |
| [ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 |
| % | 格式字符串 |
字符串格式化
基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
print ("我叫 %s 今年 %d 岁!" % ('小明', 10)) # 我叫 小明 今年 10 岁!
字符串格式化符号:
| 符号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令:
| 符号 | 功能 |
|---|---|
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号( + ) |
| 在正数前面显示空格 | |
| # | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
| 0 | 显示的数字前面填充'0'而不是默认的空格 |
| % | '%%'输出一个单一的'%' |
| (var) | 映射变量(字典参数) |
| m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
之前我们习惯用百分号 (%):
# %s,%d
name = 'Runoob'
print('Hello %s' % name) # Hello Runoob
print('Hello %d' % 111) # Hello 111
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
print(f'hello {name}')
三引号
三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print(para_str)
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
unicode字符串
Unicode字符串存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。

浙公网安备 33010602011771号