Python Relearning-String
琐碎的语法
运算符
//向下取整,靠近负无穷海象运算符
(a:=3)>2,先赋值再操作,不能单独作为赋值语句。位运算符
&按位与|按位或^按位异或~按位取反<<、>>左移、右移
逻辑运算符
and布尔与or布尔或not布尔非
成员运算符
in和not in身份运算符
is和not isis 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。
a is b相当于id(a)==id(b),id()能够获取对象的内存地址。如果
a=10;b=a;则此时a和b的内存地址一样的;但当 a=[1,2,3
]; 另b=a[:]时,虽然a和b的值一样,但内存地址不一样。
连续赋值
a = b = c = 1支持复数
a=3+4ja=complex(3,4)布尔类型
bool是int的子集,可以使用
bool()函数将其他类型的值转换为布尔值。以下值在转换为布尔值时为False:None、False、零 (0、0.0、0j)、空序列(如''、()、[])和空映射(如{})。其他所有值转换为布尔值时均为True。布尔类型也可以被转换成其他数据类型
布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。
只有一个元素的元组
需要注意在元素后面添加一个逗号,以区分它是一个元组而不是一个普通的值
not_a_tuple = (42)tuple=(42,)bytes类型bytes类型表示的是不可变的二进制序列,与字符串类型不同的是,bytes类型中的元素是整数值(0 到 255 之间的整数),而不是 Unicode 字符。创建byte类型:
类型转换
int()、float()、str()complex(x[,y]),返回复数,y默认是0repr(object),将参数object转化为字符串形式,如果里面有转义字符,会转化为其相应的转义字符。repr()函数主要 用于调试,如果没有等价的语法,则会发生SyntaxError 异常。eval()函数,作用是用来计算在字符串中的有效Python表达式,并返回一个对象。通俗来说就是把传入的字符串的引号去掉,返回引号去掉的值。eval("[21,4+4]")返回[21,8]同时
eval还有两个可选参数,globals()和locals(),eval会现在局部命名空间locals()中找参数,然后再全局命名空间globals()中找。1
2print(eval("{'name':'linux','age':age}",{"age":1822},{"age":1823}))
#输出结果:{'name': 'linux', 'age': 1823}tuple()、list() 、set() 、frozenset()、dict()函数分别转换为不可变元组、列表、可变集合、不可变集合、字典。chr() 、ord()实现字符和整数之间的转换。bin()、oct()、hex()分别将一个整数转换为二进制、八进制、十六进制字符串
math库数学函数
常数
math.emath.pimath.tau$\pi$的二倍,6.28……math.nanmath.inf
math.abs(),返回绝对值math.abs(),返回绝对值math.ceil(),向上取整math.floor(x),向下取整math.exp(x),返回指数函数math.fabs(),浮点数形式返回数字的绝对值math.log(x)返回自然对数math.log10(x)返回以10为底的对数math.modf()返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。math.sqrt()返回平方根round(x[,n)返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。
转义字符
\a响铃\b退一个字符\000空\v纵向制表符\t横向制表符\r回车,将\r后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将\r后面的内容完全替换完成。\f换页\yyy输出八进制数yyy代表的字符 ,y 代表 0~7 的字符,例如:\012代表换行。\xyy十六进制数,以\x开头,y代表的字符,例如:\x0a代表换行r+字符串表示原始字符,比如r"slk\nsd"
格式化字符串
字符串内建函数
大小写/格式
str.capitalize()将字符串的第一个字母变成大写,其他字母变小写。
str.lower()转换字符串中所有大写字符为小写.
str.upper()转换字符串中的小写字母为大写
str.title()返回”标题化”的字符串,就是说所有单词都是以大写开始,其余字母均为小写
str.center(width[, fillchar])返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充。
str.islower()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
str.isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
str.istitle()如果字符串是标题化的(所有单词都是以大写开始,其余字母均为小写)则返回 True,否则返回 False
str.isspace()如果字符串中只包含空白,则返回 True,否则返回 False.
str.swapcase()用于对字符串的大小写字母进行转换,即将大写字母转换为小写字母,小写字母会转换为大写字母。
字符/数字/检测
str.isalnum()检查字符串是否由字母和数字组成,即字符串中的所有字符都是字母或数字。
如果字符串为空(长度为0),则返回
False,因为空字符串不包含任何字母或数字。特殊字符(如标点符号、空格、特殊符号等)不被认为是字母或数字。
汉字被认为是字母。
str.isalpha()当字符串里面所有字符都是字母(包含汉字)的时候,返回True,否则返回False。
空字符返回False.
str.isdigit()如果字符串只包含数字则返回 True 否则返回 False..
str.numeric()
isnumeric() 方法检测字符串是否只由数字组成,数字可以是: Unicode 数字,全角数字(双字节),罗马数字,汉字数字。
指数类似 ² 与分数类似 ½ 也属于数字。
检测特定位置的字符
分割/移除/替换
str.strip([chars]);用于移除字符串头尾指定的字符(默认为空格)或字符序列
str.lstrip([chars])截掉字符串左边的空格或指定字符。
str.rstrip([chars])截掉字符串右边的空格或指定字符。
str.split(str="", num=string.count(str))通过指定分隔符对字符串进行切片,该方法将字符串分割成子字符串并返回一个由这些子字符串组成的列表。
如果第二个参数 num 有指定值,则分割为 num+1 个子字符串。
str.replace(old, new [, max])把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
str.splitlines([keepends])按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。默认为 False
翻译函数
str.maketrans()和str.translate(table)string.maketrans(x[, y[, z]])用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
x — 必需,字符串中要替代的字符组成的字符串。
y — 可选,相应的映射字符的字符串。
z — 可选,要删除的字符。
str.translate(table)返回翻译后的字符串,若给出了 delete 参数,则将原来的bytes中的属于delete的字符删除,剩下的字符要按照table中给出的映射来进行映射 。
示例
1
2
3
4
5
6
7
8#!/usr/bin/python3
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab) # 制作翻译表
str = "this is string example....wow!!!"
print (str.translate(trantab))输出结果如下:
th3s 3s str3ng 2x1mpl2....w4w!!!
计数
len(string)返回字符串长度
str.count(sub, start= 0,end=len(string))统计字符串里某个字符或子字符串出现的次数。可选参数为在字符串搜索的开始与结束位置。
查找
str.find(str, beg=0, end=len(string))`方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果指定范围内如果包含指定索引值,返回的是索引值在字符串中的起始位置。如果不包含索引值,返回-1。
str.rfind(str, beg=0, end=len(string))rfind()返回字符串最后一次出现的位置,如果没有匹配项则返回-1。str.index(str, beg=0, end=len(string))该方法与
str.find()方法一样,只不过如果str不在 string中会报一个异常。rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始.
str.startswith(substr, beg=0,end=len(string));用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。不包括end本身
str.endswith(suffix[, start[, end]])endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。可选参数 “start” 与 “end” 为检索字符串的开始与结束位置。不包括end本身
其他
max(str)返回字符串中最大的字母。
min(str)返回字符串中最小的字母。
str.zfill(width)返回指定长度的字符串,原字符串右对齐,前面填充0。
str.ljust(width[, fillchar])返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。
str.rjust(width[, fillchar])返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
str.join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
1
2
3
4
5
6
7#!/usr/bin/python3
s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))




