Python学习Day08
字符串 II
判断和检测
-
startswith(prefix[,start[,end]]):用于判断参数所指定的字符串是否出现在字符串的起始位置
-
endswith(prefix[,start[,end]]):用于判断参数所指定的字符串是否出现在字符串的结束位置
方法中出现的参数表示索引的下标值
>>> x = "唱跳rap" >>> x.startswith("唱") True >>> x.startswith("跳") False >>> x.endswith("p") True >>> x.endswith("rap") True >>> x.endswith("r") False >>> x.startswith("跳",1) True >>> #这里意为从索引下标值为1的元素(即“跳”)开始判断 >>> x.endswith("ra",1,3) False >>> x.endswith("ra",1,4) True
-
isupper():判断一个字符串中所有的字母是否均为大写
-
islower():判断一个字符串中所有的字母是否均为小写
-
istitle():判断一个字符串中所有单词是否都是以大写字母开头,其余字母均为小写
>>> x = "You need Python" >>> x.istitle() False >>> x = "You Need Python" >>> x.istitle() True >>> x.isupper() False >>> x.upper().isupper <built-in method isupper of str object at 0x000001DFF6F34AB0> >>> x.upper().isupper() True >>> #Python是先通过调用upper的方法将字符串全体转化成大写字母,然后在进行isupper方法的判断,所以这个顺序是从左到右的
-
isalpha():判断一个字符串中是否只是由字母构成
-
isspace():判断是否为一个空白字符串
空白字符串:可以是空格、tab、转义字符
-
isprintable():判断一个字符串中,是否所有的字符都是可打印的
转义字符不可以被打印
>>> x = "I love Python" >>> x.isalpha() False >>> #空格不是字母 >>> x = "IlovePython" >>> x.isalpha() True >>> " \n".isspace() True >>> " 1".isspace() False >>> "A B C ".isprintable() True >>> "A B C \n".isprintable()
-
以下三个方法均是检查数字的
-
isdecimal()
-
isdigit()
-
isnumeric()
三者的区别:
-
isalnum():这是一个集大成者,只要isalpha()、isdecimal()、isdigit()、isnumeric()四个方法中任意一个方法的返回值是True,那么这个方法的结果都是True
-
isidentifier():判断字符串是否是一个合法的Python标识符
>>> "I love Python".isidentifier() False >>> "I_love_Python".isidentifier() True >>> #空格不是标识符 >>> "Python233".isidentifier() True >>> "233Python".isidentifier() False >>> #标识符不能以数字开头
截取
-
strip(chars=None)
-
lstrip(chars=None)
-
rtrip(chars=None)
>>> (" 左侧不要留白").lstrip() '左侧不要留白' >>> ("右侧不要留白 ").rstrip() '右侧不要留白' >>> (" 左右都不要留白 ").strip() '左右都不要留白'
chars的参数默认为None,意为去除的是空白
>>> "www.baidu.com".lstrip("wcom.") 'baidu.com' >>> "www.baidu.com".rstrip("wcom.") 'www.baidu' >>> "www.baidu.com".strip("wcom.") 'baidu'
-
removeprefix(prefix):允许指定删除的前缀
-
removesuffix(suffix):允许指定删除的后缀
拆分&拼接
-
partition(sep):将字符串以参数指定的分割符为依据进行切割,将切割后的结果返回一个三元组(三个元素的元组),从左到右寻找分割符
-
rpartition(sep):将字符串以参数指定的分割符为依据进行切割,将切割后的结果返回一个三元组(三个元素的元组),从右到左寻找分割符
>>> "Biology".partition("o") ('Bi', 'o', 'logy') >>> "Biology".rpartition("o") ('Biol', 'o', 'gy')
-
split(sep=None,maxsplit=-1):如果不指定任何参数值,那么该函数就会按照自己的想法来(默认情况下切割空格),从左到右寻找分割符,第一个参数可以设置分割符,第二个参数用来设置分割次数。
-
rsplit(sep=None,maxsplit=-1):如果不指定任何参数值,那么该函数就会按照自己的想法来(默认情况下切割空格),从右到左寻找分割符,第一个参数可以设置分割符,第二个参数用来设置分割次数。
>>> "You need Python".split() ['You', 'need', 'Python'] >>> #切割了空格 返回一个列表 >>> "苟日新,日日新,又日新".split(",") ['苟日新', '日日新', '又日新'] >>> "苟日新,日日新,又日新".split(",",1) ['苟日新', '日日新,又日新'] >>> "苟日新,日日新,又日新".rsplit(",",1) ['苟日新,日日新', '又日新']
-
splitlines(keepends=False):将字符串按行进行分割,将结果以列表的形式返回
>>> "苟日新\n日日新\n又日新".splitlines() ['苟日新', '日日新', '又日新'] >>> "苟日新\r日日新\r又日新".splitlines() ['苟日新', '日日新', '又日新'] >>> "苟日新\n\r日日新\n\r又日新".splitlines() ['苟日新', '', '日日新', '', '又日新'] >>> "苟日新\n\r日日新\n\r又日新".splitlines(True) ['苟日新\n', '\r', '日日新\n', '\r', '又日新']
-
join(iterable): 该方法的参数是一个可迭代对象,其字符串是作为分割符来使用的
".".join(["www","baidu","com"]) 'www.baidu.com' >>> #一般来说,我们用加号进行拼接 >>> s = "Python" >>> s += s >>> s 'PythonPython' >>> #用join达到同样的效果 >>> "".join(("Python","Python")) 'PythonPython'
格式化字符串的方法
format方法
使用一对花括号来表示替换字段,即在字符串中占一个坑位的意思,而真正的内容是放在format的参数中
>>> "1 + 2 = {} 2的平方是{} 3的立方是{}".format(1+2,2*2,3*3*3)
'1 + 2 = 3 2的平方是4 3的立方是27'
我们也可以在花括号中写上数字表示参数的位置,而参数中的字符串会被当作元组中的元素来对待
>>> "{} 是 {}".format("我","你霸霸")
'我 是 你霸霸'
>>> "{1} 是 {0}".format("我","你霸霸")
'你霸霸 是 我'
下标索引值是可以被多次引用的,并且可以通过关键字进行索引
>>> "{0}{0}{1}{1}".format("开","心")
'开开心心'
>>> "{n} is short,you need {thing}".format(thing = "Python",n = "Life")
'Life is short,you need Python'
如果想要在单独地输入花括号,我们可以用以下两种方法
>>> #1.在format参数中直接使用花括号
>>> "{} {} {}".format(1,"{}",3)
'1 {} 3'
>>> #2.用花括号来注释花括号
>>> "{} {{}} {}".format(1,2)
'1 {} 2'
[align]
align指定对齐的方式
值 | 含义 |
---|---|
‘<’ | 强制字符串在可用空间内左对齐(默认) |
‘>’ | 强制字符串在可用空间内右对齐 |
‘=’ | 强制将填充放置在符号(如果有)之后但在数字之前的位置(这适用于以“+000000120”的形式打印字符串) |
‘^’ | 强制字符串在可用空间内居中 |
>>> "{:^20}".format(250)
' 250 '
>>> #该代码意为在20个字符串中强制居中250这个数据,其中冒号是必须的,冒号左边是位置或者关键字索引,右边才是格式化选项
>>> "{1:>10}{0:<10}".format(233,520)
' 520233 '
>>> "{left:>10}{right:<10}".format(left = 233,right = 520)
' 233520 '
>>> #填充
>>> "{:%>10}{:%<10}".format(233,520)
'%%%%%%%233520%%%%%%%'
>>> "{:0=10}{:0=10}".format(233,520)
'00000002330000000520'
符号选项
值 | 含义 |
---|---|
‘+’ | 正数在前面添加正号(+),负数在前面添加负号(-) |
‘-’ | 只有负数在前面添加符号(-),默认行为 |
空格 | 正数在前面添加一个空格,负数在前面添加一个负号(-) |
>>> "{:+} {:-} {:-}".format(520,-250,250)
'+520 -250 250'
>>> #如果需要适用千位的分隔符,我们可用逗号或者下划线表示,如果位数不足,则分隔符不显示
>>> "{:,} {:_} {:,} {:_}".format(1234,1234,123,123)
'1,234 1_234 123 123'
精度
.f表示小数点后的位数
.g表示小数点前后的位数
.加参数 表示截取的字符
>>> "{:.2f}".format(3.1415926)
'3.14'
>>> "{:.2g}".format(3.1415926)
'3.1'
>>> "{:.6}".format("I love Python")
'I love'
type类型选项
决定数据应当如何来呈现
值 | 含义 |
---|---|
‘b’ | 将参数以二进制的形式输出 |
‘c’ | 将参数以Unicode字符的形式输出 |
‘d’ | 将参数以十进制的形式输出 |
‘o’ | 将参数以八进制的形式输出 |
‘x’ | 将参数以十六进制的形式输出 |
‘X’ | 将参数以十六进制的形式输出 |
‘n’ | 跟’d’类似,不同之处在于它会适用当前语言环境设置的分隔符插入到恰当的位置 |
None | 跟’d’一样 |
>>> "{:b}".format(24)
'11000'
>>> "{:c}".format(24)
'\x18'
>>> "{:d}".format(24)
'24'
>>> "{:o}".format(24)
'30'
>>> "{:x}".format(24)
'18'
>>> "{:X}".format(24)
'18'
>>> # "#"可以作为前缀提示当前进制
>>> "{:#b}".format(24)
'0b11000'
>>> "{:#x}".format(24)
'0x18'
适用于浮点数和负数的类型
值 | 含义 |
---|---|
‘e’ | 将参数以科学计数法的形式输出(以字母’e’来标示指数,默认精度为6) |
‘E’ | 将参数以科学计数法的形式输出(以字母’E’来标示指数,默认精度为6) |
‘f’ | 将参数以定点表示法的形式输出(“不是数”用’nan’标示,无穷用’inf’标示,默认精度为6) |
‘F’ | 将参数以定点表示法的形式输出(“不是数”用’NAN’标示,无穷用’INF’标示,默认精度为6) |
‘G’ | 通用格式,小数以’F’形式输出,大数以’E’的形式输出 |
‘g’ | 通用格式,小数以’f’形式输出,大数以’e’的形式输出 |
‘n’ | 跟’g’类似,不同之处在于它会适用当前语言环境设置的分隔符插入到恰当的位置 |
‘%’ | 以百分比形式输出(将数字乘以100并显示为定点表示法(‘f’)的形式,后面附带一个百分号) |
‘None’ | 跟’g’类似,不同之处在于当使用定点表示法时,小数点后将至少表示一位,默认精度与给定值所需的精度一样 |
>>> "{:e}".format(3.1415)
'3.141500e+00'
>>> "{:E}".format(3.1415)
'3.141500E+00'
>>> "{:f}".format(3.1415)
'3.141500'
>>> "{:g}".format(123456789)
'1.23457e+08'
>>> "{:g}".format(1234.56789)
'1234.57'
>>> "{:%}".format(0.99)
'99.000000%'
>>> "{:.2%}".format(0.99)
'99.00%'
>>> "{:.{pre}f}".format(3.14159,pre = 2)
'3.14'
f-字符串
>>> years = 14
>>> "我今年{}岁了".format(years)
'我今年14岁了'
>>> f"我今年{years}岁了"
'我今年14岁了'
>>> "1+2 = {},2的平方是{}".format(1+2,2*2)
'1+2 = 3,2的平方是4'
>>> f"1+2 = {1+2},2的平方是{2*2}"
'1+2 = 3,2的平方是4'
>>> "{-520:010}"
'{-520:010}'
>>> f"{-520:010}"
'-000000520'
>>> "{:,}".format(123456789)
'123,456,789'
>>> f"{123456789:,}"
'123,456,789'