第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‘

posted @ 2011-05-26 16:57  小苏打  阅读(253)  评论(0编辑  收藏  举报