2011/12/06 Wed 09:51
字符串都是不可变的,分片赋值不合法:
mystr = 'cogito, ergo sum'
mystr[1:5] = 'abcd'
Traceback (most recent call last):
File "", line 1, in
mystr[1:5] = 'abcd'
TypeError: 'str' object does not support item assignment
字符串格式化方法:百分号(%)实现,多个时用tuple实现,如:
format = 'sakura when i see it hit the %s my %s gets weak'
format
Out[7]: 'sakura when i see it hit the %s my %s gets weak'
values = ('ground','heart')
values
Out[9]: ('ground', 'heart')
format % values
Out[10]: 'sakura when i see it hit the ground my heart gets weak'
在python中只有tuple和dict可以格式化多个值,而list等序列会被解释为一个值。
可以在格式化时提供精度和格式,如下:
format = 'print a number in format: %10.3f' % 3.14159265
format
Out[12]: 'print a number in format: 3.142'
format = 'print a number in format: %-10.3f' % 3.14159265
format
Out[14]: 'print a number in format: 3.142 '
format = 'print a number in format: %+10.3f' % 3.14159265
format
Out[16]: 'print a number in format: +3.142'
format = 'print a number in format: %010.3f' % 3.14159265
format
Out[18]: 'print a number in format: 000003.142'
10.3f 中 f 为类型,10为最小宽度,3为小鼠精度,- 表示左对齐,+ 表示显示正负号,0 表示如不够宽度则用0补全,不表示八进制。
ps:python中0和0x表示八进制数和十六进制数,如
010
Out[2]: 8
0x10
Out[3]: 16
字符串转换类型除了 f 还有
d :signed int (dec)
o :unsigned (oct)
u :unsigned dec
x / X : unsigned hex
e / E :科学计数法
s : 用str转换任意python对象
r : 用repr转任意python对象
如果用×作为宽度或者精度,则从tuple参数中读取,如:
format = 'print a number in format: %*.3f' % (15,3.14159265)
format
Out[22]: 'print a number in format: 3.142'
format = 'print a number in format: %*.*f' % (15,5,3.14159265)
format
Out[24]: 'print a number in format: 3.14159'
format = 'print a number in format: %10.*f' % (5,3.14159265)
format
Out[26]: 'print a number in format: 3.14159'
字符串方法:
find : 查找子串,返回左索引,找不到返回 -1 ,后面的参数指定起止点,左闭右开。注意,返回零表示在开头找到,不是boolean。
mystr
Out[27]: 'cogito, ergo sum'
mystr.find('co')
Out[28]: 0
mystr.find('er')
Out[29]: 8
mystr.find('er',1,5)
Out[30]: -1
join :用某符号连接,是split的逆过程。
dirs = ['.','mycode','cnn','denoise']
dirs
Out[32]: ['.', 'mycode', 'cnn', 'denoise']
'/'.join(dirs)
Out[33]: './mycode/cnn/denoise'
lower :返回小写。
replace :替换,后项参数替换掉前面的参数。
split :分割,如果没有分割符号,则用所有空格,制表,回车分割。
mydir
Out[35]: './mycode/cnn/denoise'
mydir.split('/')
Out[36]: ['.', 'mycode', 'cnn', 'denoise']
translate :把ASCII 字符集中的某些值替换成另一值,相当于重新生成了一个表之间的映射,maketrans 生成的 table 即为一个新的 ASCII 表。
from string import maketrans
table = maketrans('aeiou','mnbpt')
'das ist ein auto'.translate(table)
Out[39]: 'dms bst nbn mttp'
以上整理字符串相关的常用内容。
THE END
reference:
1. 《Python基础教程》([挪] Magnus Lie Hetland 著)