第2章 数据类型 笔记(续)
常用的字符串方法:
s.count(t,start,end):返回字符串s(或s的start:end分片中)t出现的个数
s.find(t,start,end):返回字符串s(或s的start:end分片中)t出现的最左位置,若没有找到则返回-1,s.rfind()返回出现的最右位置
s.index(t,start,end):返回字符串s(或s的start:end分片中)t出现的最左位置,若没有找到则产生ValueError异常,s.rindex()可以从最右边开始搜索
s.endswith(x,start,end):如果s(或s的start:end分片中)以字符串x(或元组x中的任意字符串)结尾,就返回True,否则返回False
s.isalnum():如果s非空,且其中的每个字符都是字母或者数字,则返回True
s.isalpha():如果s非空,且其中的每个字符都是字母,则返回True
s.isdigit():如果s非空,且其中的每个字符都是ASCII数字,则返回True
s.isdentifier():如果s非空,且是一个有效标识符,则返回True
s.islower():如果s至少有一个可小写的,且其所有可小写的字符都是小写的则返回True,参见s.isupper()
s.isspace():如果s非空,且其中的每个字符都是空白字符,则返回True
s.join(seq):返回序列seq中每个项连接起来的结果,并且以s为两项之间的分隔
s.lower():将s中的字符变为小写,参见s.upper()
s.partition(t):返回包含3个字符串的元组----字符串s在t的最左边部分,t,字符串s在t之后的部分。如果t不在s内,则返回s和两个空字符串。
使用s.rpartition()可以在t的最右边进行分区
s.replace():返回s的一个副本,其中的每一个(最多n个,如果给定)字符串t用u替换
s.split(t,n):返回一个字符串列表,要求在字符串t出最多分割n次,如果没有给定n,则分割尽可能多次,如果t没有给定,就在空白处分割。
使用s.rsplit() 可以从右边开始分割-----只有在给定n并且n小于可能分割的最大次数才器作用。
s.splitlines(f):返回在行终结符处进行分割产生的列表,冰剥离行终结符(除非f为True)
s.strip(chars):返回s的一个副本,并将开始处与结尾处的行终结符(或者字符串chars中的字符)移除,s.lstrip()仅剥离起始处的相应字符,s.rstrip() 仅剥离结尾处的相应字符
s.swapcase():返回s的副本,并将s中的大写字符变为小写,小写字符变为大写
s.title():返回s的副本,并将s中每个单词的首字母变为大写,其他字母变为小写,参考s.istitle()
s.zfill(w):返回s的副本,如果比w短,就在开始出添加0,使其长度为w
str.maketrans():创建字符键的映射表
eg:
>>> table = "".maketrans("〇一二三四五六七八九","0123456789")
>>> print("5632".translate(table))
5632
>>> print("二四六七九".translate(table))
24679
字符串格式化:str.format()
怎么说呢,Python3的字符串格式化和C语言有很大的不同,和C#最为相近,用列子来描述吧:
>>> "{0},{1}".format('"Are you his bother?"', "she asked.")
'"Are you his bother?",she asked.'格式化话很简单,要注意的是如果要在格式化表列里面使用{ 或者 } 的话要使用转义:"{{"和"}}",不细说了。下面看替换字段:
还是以实例说明怎么用,因为我不确定可以表达清楚:
>>>"{who} turned {age} this year.".format(who = "My grandfather", age = 86)
'My grandfather turned 86 this year.'字段名可以引用集合数据类型。Python3.1开始可以忽略字段名。在格式化字段时,字段名可以是变量名。
关于字段名规则:
{field_name},{field_name!conversion},{field_name:format_specification},{field_name!conversion:format_specfication}
conversion指示符:s,强制使用字符串形式;r,强制使用表象形式;a,强制使用表象形式,当仅限与ASCII字符。
cinversion的3个指示符书上的列子是:
>>> import decimal
>>> "{0} {0!s} {0!r} {0!a}".format(decimal.Decimal("12.65"))
"12.65 12.65 Decimal('12.65') Decimal('12.65')"现在不知道这样做的用处,只好囫囵吞枣了。
format_specification(格式规约):说白了就是对字符串,的占位,对齐方式调整。例如:像C语言中的 %-5s 。
eg:
>>> "{0:&<10}".format("my")
'my&&&&&&&&'为了方便理解,画一个表格,"{0:&<10}"可以按下列理解:
{ 字段名 ! 转换[a,s,r] : 位数不够填充的字符 对齐[<,左对齐;^,居中;>,右对齐] 所占的位数 } { 0 : & < 10 } 注意:如果指定所占的位数不足,会截断字符。
整数格式规约:填充,对齐与字符串的一致,但是整数还多了一个‘=’,表示在符号和数字之间进行填充。
eg:
>>> "{0:012}".format(-333)
'-00000000333'
>>> "{0:0=12}".format(333)
'000000000333'展示符号字符:+ 必须输出字符,- 只输出负数符号,空格表示为正数输出空格,负数输出-号。注意:使用了展示符号字符就不可以使用对齐,填充字符了(我的测试是这样的)
一些特定格式:
>>> "{0:b} {0:#x}".format(65535)
'1111111111111111 0xffff'Python3.1中增加逗号对整数的分组:
>>> "{0:,} {0:0>12,}".format(65535)
'65,535 00000065,535‘