字符串方法
方法 | 解释 |
---|---|
capitalize() | 返回一个首字母大写版本的新字符串(其它字母小写) |
casefold() | 返回一个小写版本的字符串(所有都小写) |
center(width, fllchar=’’) | 返回一个字符居中的新字符串(width<=字符串宽度,新字符串=原字符串;width>字符串宽度,所有字符居中,左右使用fillchar参数指定的字符填充) |
count(sub[, start[, end]]) | 返回sub在字符串中不重叠的出现次数,可选参数start和end用于指定起始和结束位置 |
encode(encoding=‘utf-8’, errors=‘strict’) | 以encoding参数指定的编码格式对字符串进行编码。errors参数指定编码出现错误时的解决方案:默认的’strict’标识如果出错,将抛出一个UnicodeEncodeError的异常。其它可用参数值为:‘ignore’, ‘replace’和’xmlcharrefreplace’ |
endswith(suffix[, start[, end]]) | 如果字符串是以suffix指定的子字符串为结尾那么返回True,否则返回False;可选参数start和end用于指定起始和结束位置;suffix参数允许以元组的形式提供多个子字符串 |
expandtabs([tabsize=8]) | 返回一个使用空格替换制表符的新字符串,如果没有指定tabsize参数,那么默认一个制表符=8个空格 |
find(sub[, start[, end]]) | 在字符串中查找sub子字符串,返回匹配的最低索引值;可选参数start和end用于指定起始和结束位置;如果未能匹配字符串,返回-1 |
format(*args, **kwargs) | 返回一个格式化的新字符串;使用位置参数args和关键字参数kwargs进行替换 |
format_map(mapping) | 返回一个格式化的新字符串;使用映射参数mapping进行替换 |
index(sub[, start[, end]]) | 在字符串中查找sub子字符串,返回匹配的最低索引值;可选参数start和end用于指定起始和结束位置;如果未能匹配子字符串,抛出ValueError异常 |
isalnum() | 付过字符串中至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False |
isalpha() | 如果字符串中至少有一个字符并且所有字符都是字母则返回True,否则返回False |
isascii() | 如果字符串中所有字符都是ASCII则返回True,否则返回False;ASCII字符编码范围是U+0000~U+007F,空字符串也是ASXII |
isdecimal() | 如果字符串中至少有一个字符并且所有字符都是十进制数字则返回True,否则返回False |
isdigit() | 如果字符串中至少有一个字符串并且所有字符都是数字则返回True,否则返回False |
isidentifier() | 如果字符串是一个合法的Python标识符则返回True,否则返回False;调用keyword.iskeyword(s)可以监测字符串是否是一个保留标识符 |
islower() | 如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都收小写,则返回True,否则返回False |
isnumeric() | 如果字符串中至少有一个字符并且所有字符都是数字则返回True,否则返回False |
isprintable() | 如果字符串是可以打印的内容则返回True,否则返回False |
isspace() | 如果字符串中至少有一个字符并且所有字符都是空格,则返回True,否则返回False |
istitle() | 如果字符串是标题化字符串(所有的单词都是以大写开始,其余字母小写)则返回True,否则返回False |
isupper() | 如果字符串中至少包含一个区分大小写的英文字母,并且这些字母都是大写,则返回True,否则返回False |
join(iterable) | 连接过个字符串并返回一个新字符串;以调用该方法的字符串作为分隔符,插入到iterable参数指定的每个字符串的中间 |
ljust(width, fillchar=’’) | 返回一个字符左对齐的新字符串(width<=字符串宽度,新字符串=原字符串;width>字符串宽度,所有字符左对齐,左右使用fillchar参数指定的字符填充) |
lower() | 返回一个所有引文字母都转换成小写后的新字符串 |
lstrip(chars=None) | 返回一个去除左侧空白字符的新字符串;通过chars参数可以指定将要去除的字符串 |
partition(sep) | 在字符串中搜索sep参数指定的分隔符,如果找到,返回一个3元组(在sep前面的部分,sep,在sep后面的部分);如果未找到,则返回(愿字符串,) |
removeprefix(prefix) | 如果存在prefix参数知道哪个的前缀子字符串,则返回一个将该前缀去除后的新字符串;如果不存在,则返回一个原字符串的拷贝 |
removesuffix(suffix) | 如果存在suffix参数指定的后缀子字符串,则返回一个将该后缀去除后的薪资堵车;如果不存在,则返回一个原字符串的拷贝 |
replace(old, new, count=-1) | 返回一个将所有old参数之帝国的字符串替换为new的新字符串;count参数指定替换的次数,默认是-1,表示全部替换 |
rfind(sub[, start[, end]]) | 在字符串中自右向左查找sub子字符串,返回匹配的最高索引值;可选参数start和end用于指定起始和结束位置;如果未能匹配子字符串,返回-1 |
rindex(sub[, start[, end]]) | 在字符串中自右向左查找sub子字符串,返回匹配的最高索引值;可选参数start和end用于指定起始和结束位置;如果未能匹配子字符串,抛出ValueError异常 |
rjust(width, fillchar=’’) | 返回一个字符左对齐的新字符串(width<=字符串宽度,新字符串=原字符串;width>字符串宽度,所有字符右对齐,左右使用fillchar参数指定的字符填充) |
rpartition(sep) | 在字符串中自右向左搜索sep参数指定的分隔符,如果找到,返回一个3元组(在sep前面的部分,sep,在sep后面的部分);如果未找到,则返回(, ,愿字符串) |
rsplit(sep=None, maxsplit=-1) | 将字符串自右向左进行分割,并将结果以列表的形式返回;sep参数指定一个字符串所谓分割的依据,默认是空白字符串;maxsplit参数用于指定分割的次数(分割2次即为3份),默认是无限制 |
rstrip(chars=None) | 返回一个去除右侧空白字符的新字符串;通过chars参数可以指定将要去除的字符串 |
split(sep=None, maxsplit=-1) | 将字符串进行分割,并将结果以列表的形式返回;sep参数指定一个字符串所谓分割的依据,默认是空白字符串;maxsplit参数用于指定分割的次数(分割2次即为3份),默认是无限制 |
startswith(prefix[, start[, end]]) | 如果存在prefix参数指定的前缀字符串,则返回True,否则返回False;可选参数start和end用于指定起始和结束位置;prefix参数允许以元组的形式提供多个子字符串 |
strip(chars=None) | 返回一个去除左右两侧空白字符的新字符串;通过chars参数可以指定将要去除的字符串 |
swapcase() | 返回一个大小写字母翻转的新字符串 |
titile() | 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串 |
translate(table) | 返回一个根据table参数转换后的新字符串;table参数应该提供一个转换规则(可以由str.maketrans(‘a’,‘b’)进行定制,例如"Mike".translate(str.maketrans(“Me”, "15))->‘1ik5’) |
upper() | 返回一个所有英文字母都转换成大写后的新字符串 |
zfill(width) | 返回一个左侧用0田中的新字符串(width<=字符串宽度,新字符串=原字符串;width>字符串宽度,所有字符串右对齐,左侧使用0进行填充) |
大小写转换
- capitalize()
- casefold()
- title()
- swapcase()
- upper()
- lower()
str = 'I am Chinese'
print(str.capitalize())
print(str.casefold())
print(str.title())
print(str.swapcase())
print(str.upper())
print(str.lower())
I am chinese
i am chinese
I Am Chinese
i AM cHINESE
I AM CHINESE
i am chinese
对齐
- center(width, fillchar=’’)
- ljust(width, fillchar=’’)
- rjust(width, fillchar=’’)
- zfill(width)
str = 'tomcat'
print('##########')
print(str.center(10))
print(str.center(10, '*'))
print(str.center(5))
print('##########')
print(str.ljust(10))
print(str.ljust(10, '*'))
print(str.ljust(5))
print('##########')
print(str.rjust(10))
print(str.rjust(10, '*'))
print(str.rjust(5))
print('##########')
print(str.zfill(10))
print(str.zfill(5))
##########
tomcat
**tomcat**
tomcat
##########
tomcat
tomcat****
tomcat
##########
tomcat
****tomcat
tomcat
##########
0000tomcat
tomcat
查找
- count(sub[, start[, end]])
- find(sub[, start[, end]])
- rfind(sub[, start[, end]])
- index(sub[, start[, end]])
- rindex(sub[, start[, end]])
str = "上海自来水来自海上";
print(str.count('海'))
print(str.count('海', 0, 5))
print(str.find('海'))
print(str.find('海', 5, -1))
print(str.find('我'))
print(str.rfind('海'))
print(str.rfind('海', 0, 5))
print(str.rfind('我'))
print(str.index('海'))
print(str.index('海', 5, -1))
print(str.index('我'))
print(str.rindex('海'))
print(str.rindex('海', 5, -1))
print(str.rindex('我'))
2
1
1
7
-1
7
1
-1
1
7
Traceback (most recent call last):
File "stringtest.py", line 57, in <module>
print(str.index('我'))
ValueError: substring not found
替换
- expandtabs([tabsize=8])
- replace(old, new, count=-1)
- translate(table)
xxx = """
print("I am Chinese")
print("end")"""
print(xxx.expandtabs(4))
xxx = "abcdcba"
print(xxx.replace("b", "o"))
print(xxx.replace("b", "o", 1))
table = str.maketrans("ABCDEFG", "1234567", "Bb") #第三个参数填写忽略的字符串
print("AaBbCcDdEeFfGg".translate(table))
# print("I am Chinese")
# print("end")
#aocdcoa
#aocdcba
#1a3c4d5e6f7g
判断
- startswith(prefix[, start[, end]])
- endswith(suffix[, start[, end]])
- isupper()
- islower()
- istitle()
- isalpha()
- isascii()
- isspace()
- isprintable()
- isdecimal()
- isdigit()
- isnumeric()
- isalnum()
- isidentifier()
print("abcde".startswith("a")) #True
print("abcde".startswith("c", 2, -1)) #True
print("abcde".endswith("e")) #True
print("abcde".endswith("c", 0, 2)) #False
x = ("x", "y", "z")
print("abx".startswith(x)) #True
print("abcde".isupper()) #False
print("ABC".isupper()) #True
print("abcde".islower()) #True
print("aBC".islower()) #False
print("I am Chinese".istitle()) #False
print("I Am Chinese".istitle()) #True
print("abc".isalpha()) #True
print("a b c".isalpha()) #False
print("1abc".isalpha()) #False
print("".isspace()) #False
print("\t".isspace()) #True
print("\n".isspace()) #True
print("a".isprintable()) #True
print("a\n".isprintable()) #False
x = "12345" #十进制
print(x.isdecimal()) #True
print(x.isdigit()) #True
print(x.isnumeric()) #True
x = "2²" #平方
print(x.isdecimal()) #False
print(x.isdigit()) #True
print(x.isnumeric()) #True
x = "Ⅱ" #罗马数字
print(x.isdecimal()) #False
print(x.isdigit()) #False
print(x.isnumeric()) #True
x = "一二三四五" #中文
print(x.isdecimal()) #False
print(x.isdigit()) #False
print(x.isnumeric()) #True
# 另外isalnum()方法只要isalpha(),isdecimal(),isdigit()或isnumeric()中有一个返回true,则返回true
print("_if".isidentifier()) #True
print("1while".isidentifier()) #False
print("w2".isidentifier()) #True
判断是否为关键字
import keyword
print(keyword.iskeyword("if")) #True
print(keyword.iskeyword("while")) #True
截取
- strip(chars=None)
- lstrip(chars=None)
- rstrip(chars=None)
- removeprefix(prefix)
- removesuffix(suffix)
print(" aa ".lstrip())
print(" aa ".rstrip())
print(" aa ".strip())
print("www.baidu.com".strip("w.com"))
print("www.baidu.com".removeprefix("www."))
print("www.baidu.com".removesuffix(".com"))
aa
aa
aa
baidu
baidu.com
www.baidu
拆分和拼接
- partition(sep)
- rpartition(sep)
- split(sep=None, maxsplit=-1)
- rsplit(sep=None, maxsplit=-1)
- splitlines(keepends=False)
- join(iterable)
print("www.baidu.com".partition("."))
print("www.baidu.com".rpartition("."))
print("www.baidu.com".split("."))
print("www.baidu.com".split(".", 1))
print("www.baidu.com".rsplit(".", 1))
print("a\nb\rc\r\nd".splitlines())
print("a\nb\rc\r\nd".splitlines(True))
print(".".join(['a','b','c']))
('www', '.', 'baidu.com')
('www.baidu', '.', 'com')
['www', 'baidu', 'com']
['www', 'baidu.com']
['www.baidu', 'com']
['a', 'b', 'c', 'd']
['a\n', 'b\r', 'c\r\n', 'd']
a.b.c
格式化
- format(*args, **kwargs)
print("中华人民共和国成立于{}年".format(1949))
print("1+2={},2的平方是{},3的立方是{}".format(1+2, 2*2, 3*3*3))
print("{0}{1}".format(0, 1))
print("{1}{0}".format(0, 1))
print("{1}{1}".format(0, 1))
print("{},{},{}".format(1,"{}", 2))
print("{},{{}},{}".format(1, 2))
中华人民共和国成立于1949年
1+2=3,2的平方是4,3的立方是27
01
10
11
1,{},2
1,{},2
详细参数选项:
参数 | 可选项 |
---|---|
format_spec | [[fill]align][sign][#][0][width][frouping_option][.precision][type] |
fill | <any character> |
align | “<”, “>”, “=”, “^” |
sign | “+”, “-”, " " |
width | digit+ |
grouping_option | “_”, “,” |
precision | digit+ |
type | “b”, “c”, “d”, “e”, “E”, “f”, “F”, “g”, “G”, “n”, “o”, “s”, “x”, “X”, “%” |
对齐:align
- < :强制字符串在可用空间内左对齐
- > :强制字符串在可用空间内右对齐
- = :强制填充放置在符号(如果有)之后但在数字之前的位置(适用于以"±------120"的形式打印字符串)
- ^ :强制字符串在可用空间内居中
# 位置索引为0,对齐方向为<,宽度为10
print("{0:<10}".format(111))
print("{0:=10}".format(111))
print("{0:>10}".format(111))
print("{0:^10}".format(111))
111
111
111
111
宽度:width
print("{:10}".format(111))
#添加前导0,可区分正负填充0,只对数字有效
print("{:010}".format(111))
print("{:010}".format(-111))
0000000111
-000000111
填充:fill
print("{0:%>10}{1:*>10}".format(111, 111))
%%%%%%%111*******111
符号:sign(只对数字有效)
- + :正数前面添加+号,负数在前面添加-号
- - :只有负数在前面添加负号,默认行为
- 空格 :正数在前面添加一个空格,负数在前面添加一个负号
print("{:+}&{:-}&{: }".format(1,1,1))
print("{:+}&{:-}&{: }".format(-1,-1,-1))
+1&1& 1
-1&-1&-1
千分位分隔符:grouping_option
如果不足千位,分隔符不显示
- , :即为逗号
- _ :即为 下划线
print("{:,}".format(12345567))
print("{:_}".format(1233235))
12,345,567
1_233_235
精度:.precision
- 对于type设置为f或者F的浮点数来说,是限制小数点后显示多少位
- 对于type设置为g或者G的浮点数来说,是限制小数点前后一共显示多少位
- 对于非数字类型来说,限制最大字段的大小
- 对于整数来说,不允许使用该选项
print("{:.2f}".format(3.1415))
print("{:.2g}".format(3.1415))
print("{:.6}".format("abcdefghij"))
3.14
3.1
abcdef
类型:type
- b : 参数以二进制形式输出
- c :参数以Unicode字符形式输出
- d :参数以十进制形式输出
- o :参数以八进制形式输出
- x :参数以十六进制形式输出
- X :参数以十六进制的形式输出
- n :和d类似,不同的是会使用当前语言环境设置的分隔符插入到恰当的位置
- None :和d一样
print("{:b}".format(16))
print("{:#b}".format(16))
print("{:c}".format(16))
print("{:d}".format(16))
print("{:o}".format(16))
print("{:#o}".format(16))
print("{:x}".format(16))
print("{:#x}".format(16))
print("{:X}".format(16))
print("{:n}".format(16))
print("{:}".format(16))
10000
0b10000
16
20
0o20
10
0x10
10
16
16
- e :参数以科学记数法形式输出(e标示指数,默认精度为6)
- E : 参数以科学记数法形式输出(E标示指数,默认精度6)
- f :参数以定点表示法形式输出(不是数用nan标示,无穷用inf标示,默认精度为6)
- F : 参数以定点表示法形式输出(不是数用NAN标示,无穷用INF标示,默认精度为6)
- g :通用格式,小数以f输出,大数以e输出
- G :通用格式,小数以F输出,大数以E输出
- n :和g类似,会使用当前语言环境设置的分隔符插入到恰当的位置
- % :以百分比的形式输出(将数字乘以100并显示为定点表示法f的形式,后面附带一个百分号)
- Nono :类似与g,当使用定点表示法时,小数点后至少显示一位;默认精度与给定所需精度一致
print("{:e}".format(1.231241412))
print("{:E}".format(1.231241412))
print("{:f}".format(1.234232556))
print("{:F}".format(1.234232556))
print("{:g}".format(123456789))
print("{:g}".format(1234.56789))
print("{:G}".format(123456789))
print("{:G}".format(1234.56789))
print("{:%}".format(0.32423))
print("{:.2%}".format(0.32423))
1.231241e+00
1.231241E+00
1.234233
1.234233
1.23457e+08
1234.57
1.23457E+08
1234.57
32.423000%
32.42%
综合:
print("{:.{prec}f}".format(3.1415, prec=2))
print("{:{fill}{align}{width}.{prec}{ty}}".format(3.1415, fill="+", align='^', width=10, prec=3, ty='g'))
3.14
+++3.14+++
f-字符串
year = 1949
print(f"中国成立于{year}年")
print(f"1+2={1+2},2的平方是{2*2},3的立方是{3*3*3}")
print(f"{520:010}")
print(F"{-520:010}")
中国成立于1949年
1+2=3,2的平方是4,3的立方是27
0000000520
-000000520
# 测试回文数
x = '12321'
flag = True if x == x[::-1] else False
print(flag)
# True