python学习笔记(21)使用字符串

1、序列的操作(索引,分片,乘法,判断成员资格,求长度,取最小或最大值) 都可以用在字符串上,


但是注意:字符串是不可修改的,对字符串的修改,只会返回一个修改后的新字符串副本,并不会对原字符串进行修改


2、字符串格式化操作符 用百分号 % 来实现

%左侧 放置一个字符串及相应的格式标记, 右侧放希望被格式化的值

一般情况,希望被格式化的值使用元组

print("I‘m %s father." % your
输出显示为:
I'm your father.

%s
这类符号属于格式控制工具,它们告诉python把右边的变量带到字符串中,并且把变量的值放到%s所在的位置

3、在格式化字符串里输入%号,则用 %% 来输入


4、%[(name)][flags][width].[precision]typecode 格式

可以用如下的方式,对格式进行进一步的控制:
%[(name)][flags][width].[precision]typecode
(name)为命名,一般用于字典
>>> print("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})
I'm Vamei. I'm 99 year old

flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。
width表示显示宽度
precision表示小数点后精度

>>> print("%+10x" % 10)
        +a
>>> print("%04d" % 5)
0005
>>> print("%6.3f" % 2.3)
 2.300
width, precision为两个整数。我们可以利用*,来动态代入这两个量
>>> print("%.*f" % (4, 1.2))
1.2000

5、Template的用法

Template属于string中的一个类,所以要使用的话可以用以下方式调用
from string import Template
Template
有个特殊标示符$,它具有以下的规则:
它的主要实现方式为
$xxx,其中xxx是满足python命名规则的字符串,即不能以数字开头,不能为关键字等,($$可以插入美元符号)
如果$xxx需要和其他字符串接触时(比如替换的字段是单词的一部分),可{}xxx包裹起来(以前似乎使用'()',我的一本参考书上是这样写的,但是现在的版本应该只能使用'{}')。例如,
aaa${xxx}aaa

Template
中有两个重要的方法:substitutesafe_substitute

这两个方法都可以通过获取参数返回字符串
>>s=Template(There $a and $b)
>>print s.subtitute(a='apple',b='banana')
There apple and banana
>>print s.safe_substitute(a='apple',b='banbana')
There apple and banbana
还可以通过获取字典直接传递数据,像这样
>>s=Template(There $a and $b)
>>d={'a':'apple','b':'banbana'}
>>print s.substitute(d)
There apple and banbana
它们之间的差别在于对于参数缺少时的处理方式

Template的实现方式是首先通过Template初始化一个字符串。这些字符串中包含了一个个key。通过调用substitutesafe_subsititute,将key值与方法中传递过来的参数对应上,从而实现在指定的位置导入字符串。这个方式的一个好处是不用像print ‘%s'之类的方式,各个参数的顺序必须固定,只要key是正确的,值就能正确插入通过这种方式,在插入很多数据的时候就可以松口气了。可是即使有这样偷懒的方法,依旧不能保证不出错,
如果
key少输入了一个怎么办呢?
substitute是一个严肃的方法,如果有key没有输入,那就一定会报错。虽然会很难看,但是可以发现问题
safe_substitute则不会报错,而是将$xxx直接输入到结果字符串中,如
there apple and $b

这样的好处是程序总是对的,不用被一个个错误搞得焦头烂额。
Template可以被继承,它的子类可以进行一些个性化'操作...
通过修改delimiter字段可以将$字符改变为其他字符,如“#”,不过新的标示符需要符合正则表达式的规范
通过修改
idpattern可以修改key的命名规则,比如说规定第一个字符开头必须是a,这对规范命名倒是很有好处。当然,这也是通过正则表示实现的。
from string import Template
class MyTemplate(Template):
  delimiter = "#"
  idpattern = "[a][_a-z0-9]*"
def test():
  s='#aa is not #ab'
  t=MyTemplate(s)
  d={'aa':'apple','ab':'banbana'}
  print t.substitute(d)
if __name__=='__main__':
  test()


6、string模块里的一些方法

string.digitsstring模块包含数字0~9的字符串
string.lettersstring模块包含所有字母(大写或者小写)的字符串
string.lowercasestring模块包含所有小写字母的字符串
string.printablestring模块包含所有可打印字符的字符串
string.punctuationstring模块包含所有标点的字符串
string.uppercasestring模块包含所有大写字母的字符串

7、

find() 返回子串在指定范围内首次出现的位置,未查到返回-1
str.find(str, beg=0,end=len(string))

注意,find不返回布尔值,如果返回值为0,说明开头第一个位置就是需要寻找的子串

rfind 最后出现的位置

index 首次出现的位置

rindex 最后出现的位置

count 出现多少次

startwith 是否子串是在开头位置

endswith 是否子串是在结尾位置


8、

join()通过特殊字符把字符串连接起来

join连接的元素都必须都是字符串

str = "-"
seq = ("a", "b", "c")
print str.join( seq )
结果显示
a-b-c

9、

islower()判断字符串中所有的字母是否都是小写
isupper()判断字符串中所有的字母是否都是大写

str = "THIS is string example....wow!!!"
print str.islower()
str = "this is string example....wow!!!"
print str.islower()
结果显示
False
True

translate 转换字符

islower 是否是小写 

capitalize 第一个字母大写 

swapcase 大小写互换 

title 首写字母大写 

istitle  首字母是否是大写

upper 小写换成大写

isupper 是否大写


10、replace用法

replace()用新字符替换旧字符
str.replace(old,new,[max]) max表示替换的个数,max为空表示全部替换

str = "this is string example....wow!!! this is really string"
print str.replace("is", "was")
print str.replace("is", "was", 2)
结果显示
thwas was string example....wow!!! thwas was really string
thwas was string example....wow!!! this is really string



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值