注意:三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
\ 反斜杠符号
’ 单引号
" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
假设:str1 = “123”,str2=“abcdef”
str1 + str2
‘123abcdef’
str1 * 2
‘123123’
str1[1]
‘23’
str1[1:4]
‘bcd’
"A" in str2
False
"d" not in str2
True
string.capitalize()
把字符串的第一个字符大写
string.center(width)
返回以长度宽度为width,字符串在中心的字符串。填充使用指定的填充字符完成(默认为空格) ,如果width小于字符串的长度,则不截位,打印完整的字符串。
Eg:
String = “商品列表”
Print(String.center(19,”-”))
注解:”商品列表”占4位,使用center函数补充到19位,”商品列表”在中心,左右两边用”-”补充,因为19是单数,字符串“商品列表”为双数占4位,剩余15位,左边8位,右边7位
string.count(str, beg=0, end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
string.decode(encoding=‘UTF-8’, errors=‘strict’)
以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’
string.encode(encoding=‘UTF-8’, errors=‘strict’)
以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
string.endswith(obj, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
string.expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
string.find(str, beg=0, end=len(string))
检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1
string.format()
格式化字符串**(详细见补充)**
string.index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在 string中会报一个异常.
string.isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
string.isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
string.isdecimal()
如果 string 只包含十进制数字则返回 True 否则返回 False.
string.isdigit()
如果 string 只包含数字则返回 True 否则返回 False.
string.islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
string.isnumeric()
如果 string 中只包含数字字符,则返回 True,否则返回 False
string.isspace()
如果 string 中只包含空格,则返回 True,否则返回 False.
string.istitle()
如果 string 是标题化的(见 title())则返回 True,否则返回 False
strig.isupper()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
string.join(seq)
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
string.ljust(width)
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
string.lower()
转换 string 中所有大写字符为小写.
string.lstrip()
截掉 string 左边的空格
max(str)
返回字符串 str 中最大的字母。
min(str)
返回字符串 str 中最小的字母。
string.replace(str1, str2, num=string.count)
把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次.
string.rfind(str, beg=0,end=len(string) )
类似于 find()函数,不过是从右边开始查找.
string.rindex( str, beg=0,end=len(string))
类似于 index(),不过是从右边开始.
string.rjust(width)
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
string.rstrip()
删除 string 字符串末尾的空格.
string.split(str="", num=string.count(str))
以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串。唯一返回值是一个列表(如果裁剪的对象不存在字符串中,则只把字符串转换成列表)
string.startswith(obj, beg=0,end=len(string))
检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查.
string.strip([obj])
在 string 上执行 lstrip()和 rstrip()
string.swapcase()
翻转 string 中的大小写
string.title()
返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
string.upper()
转换 string 中的小写字母为大写
string.zfill(width)
返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
\r使用
%g 是自动选择输出格式的,在六位数的情况下就会以科学计数法方式输出,用于打印数据时,会去掉多余的零,至多保留六位有效数字。
使用格式化符号进行进制转换
实行结果:
十六进制:0xa
二进制: 0b1010
八进制:0o12
上面使用格式化符号进行进制转换中,多加入了一个#号,目的是在转换结果头部显示当前进制类型,如不需要,可将#号去除
字符串的分割还有partition()这种方式
partition(sep) --> (head,sep,tail)
含义:从左向右遇到分隔符把字符串分割成两部分,返回头、分割符、尾三部分的三元组。如果没有找到分割符,就返回头、尾两个空元素的三元组。
Eg:
实行结果:
I’m a good sutdent.
("I’m a ", ‘good’, ’ sutdent.’)
(“I’m a good sutdent.”, ‘’, ‘’)
针对 Counter 的升级使用
#必须引用如下库
from collections import Counter
Counter (string):以字典的形式,输出每个字符串中出现的字符及其数量
isdigit和isnumeric的区别
isdigit判断只包含数字,isnumeric判断只包含数字字符
isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无
isdecimal()
True: Unicode数字,,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)
isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)
zip’函数
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
zip(a,c) # 元素个数与最短的列表一致
zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
实行结果:
[(1, 4), (2, 5), (3, 6)]
[(1, 4), (2, 5), (3, 6)]
[(1, 2, 3), (4, 5, 6)]
zfill(), 它会在数字的左边填充 0.
'12'.zfill(5)
实行结果:
‘00012’
字符串的format运用
字符串类型格式化采用format()方法,基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)
调用format()方法后会返回一个新的字符串,参数从0 开始编号。
1.占位符
"{}:计算机{}的CPU 占用率为{}%。".format("2016-12-31","PYTHON",10)
实行结果:
‘2016-12-31:计算机PYTHON的CPU 占用率为10%。’
"{}{}{}".format("圆周率是",3.1415926,"...")
"圆周率{{{1}{2}}}是{0}".format("无理数",3.1415926,"...")
实行结果:
Out[11]: ‘圆周率是3.1415926…’
Out[12]: ‘圆周率{3.1415926…}是无理数’
s="圆周率{{{1}{2}}}是{0}" #大括号本身是字符串的一部分
s.format("无理数",3.1415926,"...") #当调用format()时解析大括号
实行结果: ‘圆周率{3.1415926…}是无理数’
2.格式控制信息
format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:
{<参数序号>: <格式控制标记>}
其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充><对齐><宽度>,<.精度><类型>6 个字段,这些字段都是 可选的,可以组合使用,逐一介绍如下。
<宽度>
指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
<对齐>
指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
<填充>
指<宽度>内除了参数外
的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。
s = "PYTHON"
"{0:30}".format(s)
"{0:>30}".format(s)
"{0:*^30}".format(s)
"{0:-^30}".format(s)
"{0:3}".format(s)
Out[17]: ‘PYTHON ’
Out[18]: ’ PYTHON’
Out[19]: ***********PYTHON(和左边一样数量的星号)
Out[20]: ‘------------PYTHON------------’
Out[21]: ‘PYTHON’
逗号(,)
<格式控制标记>中逗号(,)用于显示数字的千位分隔符。
{0:-^20,}".format(1234567890)
"{0:-^20}".format(1234567890) #对比输出
"{0:-^20,}".format(12345.67890)
实行结果:
‘—1,234,567,890----’
‘-----1234567890-----’
‘----12,345.6789-----’
精度
表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。
"{0:.2f}".format(12345.67890)
"{0:H^20.3f}".format(12345.67890)
"{0:.4}".format("PYTHON")
实行结果:
‘12345.68’
‘HHHHH12345.679HHHHHH’
‘PYTH’
<类型>
1.表示输出整数和浮点数类型的格式规则。对于整数类型,输出格式包括6 种:
• b: 输出整数的二进制方式;
• c: 输出整数对应的 Unicode 字符;
• d: 输出整数的十进制方式;
• o: 输出整数的八进制方式;
• x: 输出整数的小写十六进制方式;
• X: 输出整数的大写十六进制方式;
"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
实行结果:
Out[32]: ‘110101001,Ʃ,425,651,1a9,1A9’
2.对于浮点数类型,输出格式包括4 种:
• e: 输出浮点数对应的小写字母 e 的指数形式;
• E: 输出浮点数对应的大写字母 E 的指数形式;
• f: 输出浮点数的标准浮点形式;
• %: 输出浮点数的百分形式。
浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。
"{0:e},{0:E},{0:f},{0:%}".format(3.14)
"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
实行结果:
Out[33]: ‘3.140000e+00,3.140000E+00,3.140000,314.000000%’
Out[34]: ‘3.14e+00,3.14E+00,3.14,314.00%’
print('{0:20}'.format(2))
print('{0:20}'.format("2")
实行结果:
2
2
print("{:.0%}".format(0.12))
实行结果: 12%
exit()的用法
1.sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常执行些清理工作。n默认值为0,表示正常退出,其他都是非正常退出。还可以sys.exit(“sorry, goodbye!”); 一般主程序中使用此退出。
2.os._exit(n), 直接退出, 不抛异常, 不执行相关清理工作。常用在子进程的退出。
3.exit()/quit(),跑出SystemExit异常。一般在交互式shell中退出时使用。
4.exit(0) 有什么功能?
在很多类型的操作系统里,exit(0) 可以中断某个程序,而其中的数字参数则用来表示程序是否是碰到错误而中断。exit(1) 表示发生了错误,而 exit(0) 则表示程序是正常退出的。这和我们学的布尔逻辑 0==False 正好相反,不过你可以用不一样的数字表示不同的错误结果。比如你可以用exit(100) 来表示另一种和 exit(2)或 exit(1) 不同的错误。
尽量使用join()链接字符串,因为’+’号连接n个字符串需要申请n-1次内存,使用join()需要申请1次内存。
固定长度分割字符串
import re
s = '1234567890'
a = re.findall(r'.{1,3}',s)
print(a)
实行结果:
[‘123’, ‘456’, ‘789’, ‘0’]
语法解释:’.’任意字符
‘1,3’匹配前一个字符,1-3次
Re.findall 按照模式进行寻找,找到的情况下返回列表类型
maketrans() 和 translate()
maketrans()
功能:制作用于字符串替换的映射表
格式: 字符串.maketrans(‘查找字符’,‘替换字符’) 两个字符必须长度相等
返回值:字典
translate
功能:进行字符串替换操作
格式:字符串.translate(映射表)
返回值:替换之后的字符串