python教程系列(一.4.1、内置函数之String)
字符串相关操作
+ 字符串连接符号
* 字符复制操作
'★' × 10 复制10个小星星
[] 通过指定位置(索引)来获取指定位置的字符
str[1] 获取第二个位置的字符
[:] 取片操作
[:] 获取所有字符
[开始位置:] 从开始位置获取到字符串的结尾
[:结束位置] 从字符串的开头截取到字符串结束位置之前(不包含结束位置)
[开始位置:结束位置] 从字符串的开始位置截取到结束位置之前(不包含结束位置)
r'字符串'
防止字符串中的转义字符串实现功能,把转义字符当作普通字符使用
字符串相关函数
注意: 以下的str不是模块名称,而是一个字符串变量!
capitalize() 首字母大写
格式: str.capitalize()
返回值:首字母大写的字符串,仅把整个字符串的第一个字符大写
upper() 将所有英文字符变为大写
格式:str.upper()
返回值:返回所有英文字符大写的字符串
lower() 将所有英文字符变为小写
格式:str.lower()
返回值:返回所有英文字符小写的字符串
swapcase() 大小写互相转换
格式:str.swapcase()
返回值:转换之后的字符串
title() 按照标题格式进行大小写转换(每个单词首字母大写)
格式:str.title()
返回值:返回所有英文单词首字母大写的字符串
len() 计算字符串的字符个数,以后也可以用于计算元组列表等序列
格式: len(str)
返回值:整型
count() 计算一个字符串中出现指定字符串的次数
格式:str.count('查找的字符串'[,开始位置])
返回值:返回整型
find() 查找字符串中是否具有指定的字符串,查找不到返回-1
格式:str.find(查找的字符串[,开始位置])
返回值:第一次出现的位置
index() 查找字符串中是否具有指定的字符串,查找不到直接报错
格式:str.index(查找的字符串[,开始位置])
返回值:第一次出现的位置
注意: find()和index()功能基本相似
startswith() 检测字符串是否以指定的字符串开头
格式: str.startswith('查找的字符串'[,开始位置])
返回值:布尔值
endswith() 检测字符串是否以指定的字符串结尾
格式: str.endswith('查找的字符串'[,开始位置])
返回值:布尔值
isupper() 检测字符串中字母是否都是大写字母
格式:str.isupper()
返回值:布尔值
islower()检测字符串中的字母是否都是小写字母
格式:str.islower()
返回值:布尔值
isalnum() 检测一个字符串是否都是有数字或者是否都是有字母组成
格式:str.isalnum()
返回值:布尔值
**注意:**空字符串返回False
isalpha() 检测字符串是否都是有字母类型构成,汉字作为字母处理
格式:str.isalpha()
返回值:布尔值
注意:空字符串返回False
isdigit() 检测字符串是否由纯数字字符组成
格式:str.isdigit()
返回值:布尔值
注意:空字符串返回False
isspace() 检测字符串是否完全由空白字符组成
格式:str.isspace()
返回值:布尔值
**注意:**回车,换行,缩进,空格都可以当作空白字符,空字符串是False
istitle() 检测字符串是否符合title()的结果,每个单词首字母大写
格式:str.istitle()
返回值:布尔值
isnumeric() 检测字符串是否有纯数字构成
格式:str.isnumeric()
返回值:布尔值
isdecimal()检测字符串是否完全由十进制字符组成
格式:str.isdecimal()
返回值:布尔值
split() 使用指定的字符将字符串卷拆解成多个字符串
格式: str.split('用于拆解的字符串')
返回值:列表类型
splitlines() 使用\n,\r或者\r\n切割字符串
格式:str.splitlines()
返回值:列表类型
join() 使用指定的字符串将序列中的内容组成新的字符串
格式:连接字符串.join(序列)
返回值:组成的新的字符串
zfill() 0填充操作 格式: str.zfill(长度) 返回值:填充0的字符串
**注意:**1.填充结果原有内容靠右对齐,前面位数不足使用0来补充,常用于数字类型字符串。
center() 将字符串进行居中操作,并且在空白处进行填充
格式: str.center(未来字符宽度,空白填充字符)
返回值:新的字符串
ljust() 将字符串进行左对齐操作,并且在空白处进行填充
格式: str.ljust(未来字符宽度,空白填充字符)
返回值:新的字符串
rjust() 将字符串进行右对齐操作,并且在空白处进行填充
格式: str.rjust(未来字符宽度,空白填充字符)
返回值:新的字符串
lstrip() 去掉字符串左侧的空白
格式: str.lstrip()
返回值:字符串
rstrip()去掉字符串右侧的空白
格式: str.rstrip()
返回值:字符串
strip()去掉字符串两侧的空白
格式: str.strip()
返回值:字符串
replace() 字符串替换操作
格式: str.replace(被替换的字符串,替换字符串)
返回值:替换之后的字符串、
maketrans() 制作一个字符串映射表,为了给translate函数使用
格式:str.maketrans('被替换的字符串','替换字符串')
返回值:字典类型,被替换字符串组成键,替换字符串组成值
注意: 两个参数的字符串个数必须一一对应,这里的str不是值字符串,而是真正的str,也可以写空字符串代替str(字符串都是str制作的)
translate() 进行字符串翻译操作,类似转换
格式:str.translate(映射表)
返回值:新的字符串
注意:translate用于多字符替换,replace用于长字符串替换
字符串模块相关内容 string模块
获取所有的空白字符
result = string.whitespace
print(result)
\n \r \t \x0b\x0c
获取ascii码的所有字母表(包含大写和小写)
print(string.ascii_letters)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
获取ascii码中的所有大写字母
print(string.ascii_uppercase)
ABCDEFGHIJKLMNOPQRSTUVWXYZ
获取ascii码中所有的小写字母
print(string.ascii_lowercase)
abcdefghijklmnopqrstuvwxyz
获取ascii码中所有10进制数字字符
print(string.digits)
0123456789
获取八进制所有数字字符
print(string.octdigits)
01234567
获取十六进制的所有数字字符
print(string.hexdigits)
0123456789abcdefABCDEF
打印所有可见字符
print(string.printable)
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~
打印所有标点符号
print(string.punctuation)
!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~
format格式字符串
语法: 它通过{}和:来代替%。
**注意:**字符串的format函数可以接受无限个参数,位置可以不按顺序,可以不用或者用多次,不过2.6不能为空{},2.7才可以。
“映射”示例
通过位置
In [1]: '{0},{1}'.format('kzc',18)
Out[1]: 'kzc,18'
In [2]: '{},{}'.format('kzc',18)
Out[2]: 'kzc,18'
In [3]: '{1},{0},{1}'.format('kzc',18)
Out[3]: '18,kzc,18'
通过关键字参数
In [5]: '{name},{age}'.format(age=18,name='kzc')
Out[5]: 'kzc,18'
通过对象属性
class Person:
def __init__(self,name,age):
self.name,self.age = name,age
def __str__(self):
return 'This guy is {self.name},is {self.age} old'.format(self=self)
In [2]: str(Person('kzc',18))
Out[2]: 'This guy is kzc,is 18 old'
通过下标
In [7]: p=['kzc',18]
In [8]: '{0[0]},{0[1]}'.format(p)
Out[8]: 'kzc,18'
有了这些便捷的“映射”方式,我们就有了偷懒利器。基本的Python知识告诉我们,list和tuple可以通过“打散”成普通参数给函数,而dict可以打散成关键字参数给函数(通过和*)。所以可以轻松的传个list/tuple/dict给format函数。非常灵活。
格式限定符号
它有着丰富的“格式限定符”(语法是花括号{}带冒号:),如:
填充与对齐: 填充常跟对齐一起使用
居中 = ^
左对齐 = <
右对齐 = >
后面带宽度 = :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充,如下:
In [15]: '{:>8}'.format('189')
Out[15]: ' 189'
In [16]: '{:0>8}'.format('189')
Out[16]: '00000189'
In [17]: '{:a>8}'.format('189')
Out[17]: 'aaaaa189'
精度与类型f: 精度常跟类型f一起使用
In [44]: '{:.2f}'.format(321.33345)
Out[44]: '321.33'
其中.2表示长度为2的精度,f表示float类型。 其他类型: 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
In [54]: '{:b}'.format(17)
Out[54]: '10001'
In [55]: '{:d}'.format(17)
Out[55]: '17'
In [56]: '{:o}'.format(17)
Out[56]: '21'
In [57]: '{:x}'.format(17)
Out[57]: '11'
逗号,还能用来做金额的千位分隔符:
In [47]: '{:,}'.format(1234567890)
Out[47]: '1,234,567,890'