字符串

一.基本操作:同序列

二.设置字符串的格式
1.元组
>>> str = “Hello, %s. %s enough for ya?”
>>> values = (‘world’, ‘Hot’)
>>> str % values
‘Hello, world. Hot enough for ya ?’

2.模板字符串
>>> from string import Template
>>> temp=Template(‘Hello $who,$words’) #美元符号
>>> temp.substitute(who=’gongel’,words=’good,morning!’)
‘Hello gongel,good,morning!’

3.字符串方法format
①按序匹配
>>> ‘{},{}’.format(‘gonel’,’hello’)
‘gonel,hello’

②乱序匹配(索引)
>>> “{3} {0} {2} {1} {3} {0}”.format(“be”, “not”, “or”, “to”)
‘to be or not to be’

③命名字段
>>> ‘{name} is {value:.2f}’.format(value=3.1415926,name=’π’)#不用按序
‘π is 3.14′

④简化(py3.6)
如果变量与替换字段同名-在字符串前面加上f
>>> from math import e
>>> f’it is {e}’ #也可匹配精度(格式说明)
‘it is 2.718281828459045’

⑤format进阶
*①和③可混用,②和③可混用

*列表的乱入
>>> fullname = [“Alfred”, “Smoketoomuch”]
>>> “Mr {name[1]}”.format(name=fullname)
‘Mr Smoketoomuch’

*模块的乱入
>>> import math
>>> tmpl = “The {mod.__name__} module defines the value {mod.pi} for π”
>>> tmpl.format(mod=math)
‘The math module defines the value 3.141592653589793 for π’

*基本转换
>>> ‘{pi!s} {pi!r} {pi!a}’.format(pi=’π’)
“π ‘π’ ‘\\u03c0′”
s:str字符串版本;r:reprpython表示;a:ascii
或者
>>> ‘the number is {num:f},{num:b}’.format(num=42)#b为二进制表示
‘the number is 42.000000,101010’
更多的类型操作符参考下面:

字符串格式设置中的类型说明符

*宽度、精度和千位分隔符
宽度:
>>> “{num:10}”.format(num=3)
‘ 3’
>>> “{name:10}”.format(name=”Bob”)
‘Bob ‘
#数和字符串对齐方式不同
精度:
>>> “Pi day is {pi:.2f}”.format(pi=pi)
‘Pi day is 3.14’
千位分隔符:逗号
>>> ‘1000000 is {:,}’.format(10**6)
‘1000000 is 1,000,000’

*符号、对齐和用0 填充
>>> ‘{:010.2f}’.format(pi)
‘0000003.14’

#要指定左对齐、右对齐和居中,可分别使用<、>和^。
>>> print(‘{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}’.format(pi))
3.14
3.14
3.14
#填充字符来扩充对齐说明符
>>> ‘{:$^15}’.format(‘gongel’)
‘$$$$gongel$$$$$’

#说明符=,它指定将填充字符放在符号和数字之间
>>> ‘{:=10.2f}’.format(-3.14)
‘- 3.14’

#正数加上符号,可使用说明符+(将其放在对齐说明符后面)
>>> ‘{:+.2f}’.format(3.145)
‘+3.14’

#井号(#)选项
将其放在符号说明符和宽度之间(如果指定了这两种设置)。这个选项将触发另一种转换方式,转换细节随类型而异
>>> “{:b}”.format(42)
‘101010’
>>> “{:#b}”.format(42)#加前缀
‘0b101010′

>>> “{:g}”.format(42)
’42’
>>> “{:#g}”.format(42)#保留小数点后面的0
‘42.0000’

三.字符串方法
1.center
字符串两边填充字符使其居中
>>> ‘gongel’.center(10) #默认空格
‘ gongel ‘
>>> ‘gongel’.center(10,’*’)
‘**gongel**’

2.find
查找字串,找到则返回字串第一个字符的索引,否则返回-1
>>> ‘gongel’.find(‘el’)
4
还可以指定起点或者起点和终点(不包含终点)
>>> ‘gongel’.find(‘el’,0,5)
-1

3.join
与split相反:a.join(b)将a插入b中
>>> a=’12345′
>>> p=’+’
>>> p.join(a)
‘1+2+3+4+5’

4.lower
返回字符串的小写
*词首大写:
①title方法
>>> ‘i am gongel’.title()
‘I Am Gongel’
②模块string中的函数capwords
>>> import string
>>> string.capwords(‘i am gongel’)
‘I Am Gongel’

5.replace
>>> ‘i am gongel’.replace(‘am’,’am not’)
‘i am not gongel’

6.split
拆分字符串:返回字符串列表
>>> ‘1+2+3+4+5’.split(‘+’)
[‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
注意:如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。

7.strip
删除字符串开头和末尾的字符(不包括中间字符)
>>> ‘*****i am gongel****!!!’.strip(‘!*’) #删除*和!
‘i am gongel’
注意:默认删除空白

8.replace
Python 3.x中maketrans和translate用法
单个字符的替换,不同于replace
>>> table=str.maketrans(‘123′,’GEL’) #内建函数
>>> ‘1 is good,23 is better ‘.translate(table)
‘G is good,EL is better ‘

9.判断字符串是否满足特定条件(同C++)
isalnum、isalpha、isdecimal、isdigit、isidentifier、islower、isnumeric、
isprintable、isspace、istitle、isupper

0

发表评论

邮箱地址不会被公开。 必填项已用*标注