02字符串及format函数

  • Post author:
  • Post category:其他


1.字符串格式化

格式化符号      说明

%c  转换成字符(ASCII 码值,或者长度为一的字符串)

%r  优先用repr()函数进行字符串转换

%s  优先用str()函数进行字符串转换

%d / %i  转成有符号十进制数

%u  转成无符号十进制数

%o  转成无符号八进制数

%x / %X  转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)

%e / %E  转成科学计数法(e / E控制输出e / E)

%f / %F  转成浮点数(小数部分自然截断)

%g / %G  %e和%f / %E和%F 的简写

%%  输出% (格式化字符串里面包括百分号,那么必须使用%%)


2.字符串常用方法

①find()和rfind方法分别用来查找一个字符串在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1;

②index()和rindex()方法用来返回一个字符串在另一个字符串指定范围中首次和最后一次出现的位置,如果不存在则抛出异常;③count()方法用来返回一个字符串在另一个字符串中出现的次数。

④split()和rsplit()方法分别用来以指定字符为分隔符,将字符串左端和右端开始将其分割成多个字符串,并返回包含分割结果的列表;

⑤partition()和rpartition()用来以指定字符串为分隔符将原字符串分割为3部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。


#对于split()和rsplit()方法,如果不指定分隔符,则字符串中的任何空白符号(包括空格、换行符、制表符等等)都将被认为是分隔符,返回包含最终分割结果的列表。

>>> s = 'hello world \n\n My name is Dong   '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s = '\n\nhello world \n\n\n My name is Dong   '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']
>>> s = '\n\nhello\t\t world \n\n\n My name\t is Dong   '
>>> s.split()
['hello', 'world', 'My', 'name', 'is', 'Dong']

#split()和rsplit()方法还允许指定最大分割次数,例如:
>>> s = '\n\nhello\t\t world \n\n\n My name is Dong   '
>>> s.split(None,1)
['hello', 'world \n\n\n My name is Dong   ']
>>> s.rsplit(None,1)
['\n\nhello\t\t world \n\n\n My name is', 'Dong']
>>> s.split(None,2)
['hello', 'world', 'My name is Dong   ']
>>> s.rsplit(None,2)
['\n\nhello\t\t world \n\n\n My name', 'is', 'Dong']
>>> s.split(None,5)
['hello', 'world', 'My', 'name', 'is', 'Dong   ']
>>> s.split(None,6)
['hello', 'world', 'My', 'name', 'is', 'Dong']

⑥join():字符串联接

例子:

>>> li=["apple", "peach", "banana", "pear"]
>>> sep=","
>>> s=sep.join(li)
>>> s
"apple,peach,banana,pear"

不推荐使用+连接字符串,优先使用join()方法

⑦lower()、upper()、capitalize()、title()、swapcase()

将字符串转换为小写、大写字符串、将字符串首字母变为大写、将每个单词的首字母变为大写以及大小写互换。

⑧replace():查找替换

例:

>>> s="中国,中国"
>>> print s
中国,中国
>>>s2=s.replace("中国", "中华人民共和国")
>>> print s2
中华人民共和国,中华人民共和国

⑨maketrans()和translate:

生成映射表函数maketrans和按映射表关系转换字符串函数translate

例:

>>> import string
>>> table=string.maketrans("abcdef123","uvwxyz@#$")
>>> s="Python is a greate programming language. I like it!"
>>> s.translate(table)
"Python is u gryuty progrumming lunguugy. I liky it!"
>>> s.translate(table,"gtm") #第二个参数表示要删除的字符
"Pyhon is u ryuy proruin lunuuy. I liky i!"

⑩strip()、rstrip()、lstrip()

这几个方法分别用来删除两端、右端或左端的空格或连续的指定字符。

(11)eval()

把任意字符串转化为python表达式并进行求值

>>> eval(“3+4”)

7


(12)关键字in

成员判断

>>> “a” in “abcde”

True


(13)s.startwith(t)、s.endswith(t)

判断字符串是否以指定字符串开始或结束

>>> import os

>>> [filename for filename in os.listdir(r’c:\\’) if filename.endswith((‘.bmp’,’.jpg’,’.gif’))]

(14)center()、ljust()、rjust()


返回指定宽度的新字符串,原字符串居中、左对齐或右对齐出现在新字符串中,如果指定宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充。

>>> ‘Hello world!’.center(20)

‘    Hello world!    ‘

format函数

format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点。

1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型

2.单个参数可以多次输出,参数顺序可以不相同

3.填充方式十分灵活,对齐方式十分强大

4.官方推荐用的方式,%方式将会在后面的版本被淘汰


一 填充

1.通过位置来填充字符串

>>> print(‘hello {0} i am {0}’.format(‘pipi’,’papa’))

hello pipi i am pipi

>>>

foramt会把参数按位置顺序来填充到字符串中,第一个参数是0,然后1 ……

也可以不输入数字,这样也会按顺序来填充

同一个参数可以填充多次,这个是format比%先进的地方

2.通过key来填充

print(‘hello {name1}  i am {name2}’.format(name1=’Kevin’,name2=’Tom’))

3.通过下标填充

>>> lis=[‘kate’,’peta’]

>>> print(‘hi {name[0]} , i am {name[1]}’.format(name=lis))

hi kate , i am peta

>>>

4.通过字典的key

>>>name={‘na1′:’kaka’,’na2′:’jiujiu’}

>>> print(‘{name[na1]} is {name[na2]}’.format(name=name))

kaka is jiujiu

>>>

5.通过对象的属性

class Names():

name1=’Kevin’

name2=’Tom’

print(‘hello {names.name1}  i am {names.name2}’.format(names=Names))


6.使用魔法方法

>>> args=[‘lu’]

>>> kwargs = {‘name1’: ‘Kevin’, ‘name2’: ‘Tom’}

>>> print(‘hello {name1} {} i am {name2}’.format(*args, **kwargs))

hello Kevin lu i am Tom

7.小数的精确

>>> print(‘{:.3f}  {:.2f}’.format(1.666,1.666))

1.666  1.67

二 格式转换

b、d、o、x分别是二进制、十进制、八进制、十六进制。

数字   格式  输出  描述

3.1415926  {:.2f}  3.14  保留小数点后两位

-1   {:+.2f}  -1  带符号保留小数点后两位

2.71828   {:.0f}  3  不带小数

1000000   {:,}  1,000,000 以逗号分隔的数字格式

0.25   {:.2%}  25.00%  百分比格式

1000000000  {:.2e}  1.00E+09 指数记法

25   {0:b}  11001  转换成二进制

25   {0:d}  25  转换成十进制

25   {0:o}  31  转换成八进制

25   {0:x}  19  转换成十六进制

>>> print(‘{:.3f}’.format(3.1415926))

3.142

>>>



版权声明:本文为a_small_python原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。