Python学习第三天

来源:互联网 发布:百度电影推荐系统算法 编辑:程序博客网 时间:2024/05/16 01:05

1、字符串是不可变的,不可以使用第二天中介绍的赋值方法对字符串进行赋值

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

如:

>>>formater = "%s,%s"

>>> values=("Hello","World")

>>> print(formater % values)
hello,world

3 、类似于c语言中的格式化输出,还可以格式化输出浮点数

>>> string = "pi is %.5f"
>>> from math import pi
>>> print(string % pi)
pi is 3.14159

4、string模块提供另外一种格式化值的方法:模板字符串。利用的是模板方法substitute,如下所示,这有些类似于给函数传参数,不过这个传给的是模板

>>> from string import Template
>>> s = Template("$x,$x,$y")
>>> s.substitute(x="hello",y="world")
'hello,hello,world'

如果替换字段是单词的一部分,那么参数名必须用括号括起来

>>> s = Template("hel${x}")
>>> s.substitute(x="lo")
'hello'

可以用两个$$插入美元符号

除了关键字参数之外,还可以使用字典变量提供值/名称对

>>> s = Template("$red,$yellow")
>>> d={}
>>> d['red'] = "apple"
>>> d['yellow'] = "banana"
>>> s.substitute(d)
'apple,banana'

5、3中提到的格式化操作符的右操作数可以是任何东西,如果右操作数是元组的话,则其中的每一个元素都会被单独格式化,每个值都需要一个对应的转换说明符

>>> "%.2f,%.3f,%.4f" % (0.12345,0.12345,0.12345)
'0.12,0.123,0.1235'

6、基本的转换说明符包括以下部分,注意这些项的顺序是至关重要的。

%字符:标记转换说明符的开始

转换标志(可选):-表示左对齐,+表示在转换值之前要加上正负号;""(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充

最小字段宽度(可选):转换后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出

点(.)后跟精度值(可选):如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将会从元组中读出

转换类型:这部分基本和c语言一致

简单的转换只需要写出转换类型:

>>> "%d,%f,%s,%r" % (42,42,42,42)
'42,42.000000,42,42'

转换说明符可以包括字段宽度和精度。字段宽度是转换后的值所保留的最小字符个数,精度(对于数字转换来说)则是结果中应该包含的小数位数,或者(对于字符转换来说)是转换后的值所能包含的最大字符个数。

如果两个参数都是整数(首先是字段宽度,然后是精度),通过点号(.)分隔。虽然两个都是可选的参数,但如果只给出精度,就必须包含点号

>>> '%10f' %pi
'  3.141593'
>>> '%10.2f' % pi
'      3.14'
>>> '%.2f' % pi
'3.14'
>>> '%.1s' % pi
'3'

可以用*(星号)作为字符宽度或精度(或者两者都使用)

7、符号、对齐和0填充

在字段宽度和精度值之前还可以放置一个“标表”,该标表可以是零,加号,减号或空格。零表示数字将会用0进行填充。

>>> "%010.2f" % pi
'0000003.14'

减号(-)用来左对齐

>>> "%-10.2f" % pi
'3.14      '

而空白("")意味着在正数前加上空格。这在需要对齐正负数时会很有用。

>>> print(('% 5d' % 10) + '\n' + ('% 5d' % -10))
   10
  -10

加号(+),它表示不管正数还是负数都标出符号,同样是在对齐时很有用

>>> print(('%+5d' % 10) + '\n' + ('%+5d' % -10))
  +10
  -10

8、字符串常量

string.digits 包含数字0-9的字符串

string.letters 包含所有字母(大写或小写)的字符串

string.lowercase 包含所有小写字母的字符串

string.printable 包含所有可打印字符的字符串

string.punctutation 包含所有标点的字符串

string.uppercase 包含所有大写字母的字符串

9、字符串方法

find方法可以在一个较长的字符串中查找子字符串,它返回字串所在位置的最左端索引

>>> string = "hello world"
>>> string.find("ll")
2

这个方法还可以接受可选的起始点和结束点参数

>>> string = "hellohellohello"
>>> string.find("hello",1,-1)
5
>>> string.find("hello")
0

join方法是非常重要的字符串方法,它是split方法的逆方法,用来在队列中添加元素

>>> dirs="","usr","bin","env"
>>> '/'.join(dirs)
'/usr/bin/env'
>>> dirs="usr","bin","env"
>>> '/'.join(dirs)
'usr/bin/env'

lower方法返回字符串的小写字母版

>>> "HELLO WORLD".lower()
'hello world'

tilte方法会将字符串所有单词的首字母大写

>>> "hello world".title()
'Hello World'

replace方法返回某字符串的所有匹配项均被替换之后得到的字符串

>>> "hello hello".replace("hello","world")
'world world'

split方法是一个非常重要的字符串方法,它是join的逆方法,用来将字符串分割成序列

>>> "/usr/bin/env".split("/")
['', 'usr', 'bin', 'env']

如果不提供任何分隔符,程序会把所有空格作为分隔符(空格,制表换行等)

strip方法返回去除两侧(不包含内部)空格的字符串:

>>> "     hello world     ".strip()
'hello world'

也可以去除指定的字符,将它们列为参数即可

>>> "!!!   ***hello world***   !!!".strip(" !")
'***hello world***'

translate方法和replace方法一样,可以替换字符串中的某些部分,但是和前者不同的是,translate方法只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比replace效率高得多。

在使用translate转换之前,需要先完成一张转换表。转换表中是以某字符替换某字符的对应关系。因为这个表(实际上是字符串)有多达256个项目,我们还是不要自己写了,使用string模块里面的maketrans函数就行。maketrans函数接受两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中相同位置的字符替换。在3.X中与之前不同。

>>> intab = b"aeiou"
>>> outtab = b"12345"
>>> intab = b"abcde"
>>> trantab = bytes.maketrans(intab,outtab)
>>> string = b"this is abcde"
>>> print(string.translate(trantab))
b'this is 12345'




0 0
原创粉丝点击