字符串可以通过切片的方式访问,但是不能对分片进行赋值,字符串是
不可变
的!
一个简单的例子:
如果要在格式化字符串里包括百分号,那么就必须使用
%% ,这样python就不会将%误认为是转换说明符!
格式化字符串:
格式 | 描述 | 格式 | 描述 |
---|---|---|---|
%% | 百分号%标记(多出来的%是转义作用) | ||
%c | 字符及其ASCII码 | %s | 字符串 |
%d | 有符号整数(十进制) | %u | 无符号整数(十进制) |
%o | 无符号整数(八进制) | ||
%x | 无符号整数(十六进制) | %X | 无符号整数(十六进制大写字符) |
%e | 浮点数字(科学计数法) | %E | 浮点数字(科学计数法,用E代替e) |
%f | 浮点数字(用小数点符号) | ||
%g | 浮点数字(根据值的不同自动选择%e或%f) | %G | 浮点数字(类似于%g,根据值的不同自动选择%E或%f) |
%p | 指针(用十六进制打印值的内存地址) | %n | 存储输出字符的数量放进参数列表的下一个变量中 |
>>> import math
>>> pi
3.141592653589793
>>> print 'pi = %.5f' % pi
pi = 3.14159
(1)%字符:标记转换说明符的开始
(2)转换标志(可选):-表示左对齐;+表示转换值之前要加上正负号;空白字符表示正数之前要保留空格;0表示转换值若位数不够则用0填充
(3)最小字段宽度(可选):转换后字符串中至少要有该值指定的宽度.如果是*,则宽度会从元组中读出
(4).后面跟精度值(可选):如果转换的是实数,精度表示出现在小数点后面的位数.如果是字符串,那么该数字就表示最大字段宽度.如果是*,那么会从元组中读出.
>>> '%010f' %pi
'003.141593'
>>> '%010.2f' %pi
'0000003.14'
>>> '%-10.2f' %pi
'3.14 '
>>> '%.5s' %'hello world'
'hello'
加上空白,将在正数前面加空格,这在需要正负数对齐的时候很有用:
>>> '% 5f' % pi
' 3.141593'
字符串方法
字符串的方法特别多,列举常用如下,粗体表示常用:
#capitalize将第一个字母改为大写
print(str1.capitalize())
#casefold将所有字母改为小写
print(str1.casefold())
#将字符串居中,并且用空格将字符串填充到指定长度
print(str1.center(20))
#count返回在字符串里出现的次数
print(str1.count('o',0,13))
#encode字符串编码
#endswith查看是否以指定字符串结尾
print(str1.endswith('to'))
print(str1.endswith('too'))
#expandtabs把字符串中的tab符号转换为空格,如果不指定参数默认为8个空格
print(str1.expandtabs(4))
#find检查字符是否在字符串中,如果找到则返回字符的位置,否则返回-1
print(str1.find('you'))
#index跟find一样,不过如果找不到会返回一个异常
##字符判断函数
#isalnum()如果字符串至少有一个字符并且所有字符都是字母或者数字则返回Ture,否则返回False
#isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回Ture,否则返回False
#isdecimal()如果字符串只包含十进制数字则返回True,否则返回False
#isdigit()如果字符串中只包含数字则返回True,否则返回False
#islower()如果字符串中包含至少一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回Fasle
#isupper()如果字符串中包含至少一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回Fasle
#isnumeric()如果字符串中只包含数字字符,则返回Ture,否则返回False
#isspace()如果字符串中只包含空格,则返回True,否则返回False
#istitle()如果字符串是标题花(所有的单词都是大小开始其余都是小写),则返回True,否则返回False
#join以字符串加入到字符串中作为分隔符
print(str1.join('23'))
print(str1.join('123456'))
>>> a='+'
>>> a.join('helloword')
'h+e+l+l+o+w+o+r+d'
#ijust(N)返回一个左对齐字符串,使用空格填充至N的长度新字符
#lower()将字符串转换为小写
#upper()将字符串转换为大写
#trip()返回去除两侧空格的字符串
#lstrip()去掉字符串左边的所有空格
#rtrip()去掉字符串右边的所有空格
#parition()找到字符串,把字符串分为3个元组,以sub区分
print(str1.partition('yo'))
#replace()将字符串替换为指定字符串,如果指定count,则最多不多于这么多次,默认全部
print(str1.replace('o','X',2))
#split()是join的逆方法,用来将字符串分割成序列,如果不指定分隔符,程序会把所有空格作为分隔符(空格,制表符,换行等)
>>> a='h+e+l+l+o+w+o+r+d'
>>> a.split('+')
['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
>>> '/usr/local/bin'.split('/')
['', 'usr', 'local', 'bin']
#translate() 方法根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 del 参数中,第二个参数是可选,指定需要删除的字符.
>>> from string import maketrans
>>> trantab = maketrans('
aeiou'
, '
12345'
)
>>> str = "this is string example....wow!!!";
>>> print str.translate(trantab);
th3s 3s str3ng 2x1mpl2....w4w!!!
>>> print str.translate(trantab, 'xm'); #删除xm字符
th3s 3s str3ng 21pl2....w4w!!!