创建
- 使用单引号或双引号或三引号
- string1 = new String(“abc”)
注意:三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
转义字符
\ 反斜杠符号
’ 单引号
" 双引号
\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’
- in 成员运算符 - 如果字符串中包含给定的字符返回 True
"A" in str2
False
- not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
"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使用
实行结果:123
注解:\r:将光标重新换到一开始,继续打印 -
字符串格式化符号 %f 可指定小数点后的精度。
实行结果:19.13 -
%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(映射表)
返回值:替换之后的字符串