操作 | 解释 |
---|---|
s = ‘’ | 空字符串 |
s = “spam’s” | 普通字符串,单双引号相同 |
S = ‘s\np\ta\x00m’ | 转义序列 |
s = “”"…""" | 三重引号字符串块 |
s = r’\temp\spam’ | Raw字符串 |
S = b’spam’ | Python 3.0及之后版本中的字节字符串 |
s = u’spam’ | Python 2.6及之后版本使用的Unicode字符串 |
s1 + s2 | 合并 |
s * 3 | 重复 |
s[i] | 索引 |
s[i:j] | 分片 |
len(s) | 求长度 |
“a %s parrot” % kind | 字符串格式化表达式 |
“a {0} parrot”.format(kind) | Python 2.6及之后版本与Python 3.0及之后版本中的字符串格式化方法 |
a.find(‘pa’) | 字符串方法调用:搜索 |
s.rstrip() | 移除空格 |
s.replace(‘pa’, ‘xx’) | 替换 |
s.split(’,’) | 用展位符分隔 |
s.isdigit() | 内容测试(这里是测试是否为数字组成的字符串) |
s.lower() | 大写转小写 |
S.endswith(‘spam’) | 结束字符测试 |
‘spam’.join(strlist) | 插入分隔符 |
S.encode(‘latin-1’) | 编码 |
for x in S: print(x) | 迭代 |
‘spam’ in S | 成员关系判断 |
[c * 2 for c in S] | 字符串解析 |
map(ord, S) | 函数映射 |
a = "abcd"'efg' # 'abcdefg'
‘\’后面的一个或多个字符,在最终的字符串中会被单个字符所替代。
转义 | 意义 |
---|---|
\newline | \后面另起一行,表示连续 |
\ | 反斜杠(保留\字符) |
’ | 单引号(保留‘字符) |
" | 双引号(保留"字符) |
\a | 响铃 |
\b | 倒退 |
\f | 换页 |
\n | 新行(换行) |
\r | 返回 |
\t | 水平制表符 |
\v | 垂直制表符 |
\N{id} | Unicode数据库id |
\uhhhh | Unicode 16位的十六进制值(必须有四个十六进制位h) |
\uhhhhhhhh | Unicode 32位的十六进制值(必须有八个十六进制位h) |
\xhh | 十六进制值(必须有两个十六进制位h) |
\ooo | 八进制值(必须至少有一个八进制位o,至多三个) |
\0 | 空字符(注意与空格不同) |
\other | 不转义(保留原字符) |
s = 'abc\xFF' # 'abcÿ'
s = 'abc\xF' # SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 3-5: truncated \xXX escape
s = 'abc\6' # 'abc\x06'
s = 'abc\11' # 'abc\t'
s = 'abc\555' # 'abcŭ'
s = 'abc\2222222' # 'abc\x9b333333''
s = 'abc\ABC' # 'abc\\ABC'
s = 'abc\' # SyntaxError: EOL while scanning string literal
# 下述两个字符串相同
'C:\\MyFile\\'
r'C:\MyFile\'
a = 'abcdefghijklmn'
a[0:5] # 'abcde'
a[5:0] # ''
a[0:6:2] # 'ace'
a[9:5:-3] # 'jg'
a[::-1] # 'nmlkjihgfedcba'
S = 'abcdefg'
L = list(S)
L[0] = 'x'
L[1] = 'y'
S = ''.join(L) # 'xycdefg'
代码 | 意义 |
---|---|
s | 字符串(或任何对象) |
r | 同s,但使用repr,而不是str |
c | 字符 |
d | 十进制(整数) |
i | 整数 |
u | 无号(整数) |
o | 八进制整数 |
x | 十六进制整数 |
X | 同x,但打印大写 |
e | 浮点整数,使用科学计数法表示,默认保存小数点后六位 |
E | 同e,但打印大写 |
f | 浮点十进制,默认保存小数点后六位 |
F | 浮点十进制,默认保存小数点后六位 |
g | 浮点e或者f,根据数的大小决定(太小或太大就使用科学计数法,否则直接使用浮点数) |
G | 浮点E或者f,根据数的大小决定(太小或太大就使用科学计数法,否则直接使用浮点数) |
% | 常量% |
%[(name)][flags][width][.precision]typecode
name放置一个字典的键。
'%(n)d | %(x)s' % {
"n":1, "x":"spam"} # '1 | spam'
flags中“-”表示左对齐,"+"表示保留正负号,“0"表示补零,”#"后接o或者x表示八进制或者十六进制。
x = 1.23456789
'%-6.2f | %05.2f | %+06.1f' % (x, x, x) # '1.23 | 01.23 | +001.2'
x = 123456789
'%#o | %#x' % (x, x) # '0o726746425 | 0x75bcd15'
width和precision可编码为一个"*",指定它们应该从输入值的下一项取值。
x = 1.23456789
'%*.*f' % (7, 4, x) # ' 1.2346'
'%g | %g | %g | %G | %G | %G' % (1.23456, 0.00000000000123456, 12345600000000, 1.23456, 0.00000000000123456, 12345600000000) # '1.23456 | 1.23456e-12 | 1.23456e+13 | 1.23456 | 1.23456E-12 | 1.23456E+13'
'{motto}, {0} and {food}'.format(32, motto=3.14 , food=[1,2]) # '3.14, 32 and [1, 2]'
import sys
'My {1[spam]} runs {0.platform}'.format(sys, {
'spam': 'laptop'}) # 'My laptop runs win32'
格式化字符串中的方括号可以指定列表(及其他序列)偏移量以执行索引,但注意只有单个的正的偏移才能在格式化字符串中的语法中有效。要指定负的偏移或分片,或者使用任意表达式,必须在格式化自身之外运行表达式。
somelist = list('SPAM')
'first={0[0]}, third={0[2]}'.format(somelist) # 'first=S, third=A'
'first={0}, last={1}'.format(somelist[0], somelist[-1]) # 'first=S, last=M'
parts = somelist[0], somelist[-1], somelist[1:3]
'first={0}, last={1}, middle={2}'.format(*parts) # "first=S, last=M, middle=['P', 'A']"
格式化标准格式
{
format!conversionflag:formatspec}
fieldname是指定参数的一个数字或关键字,后面跟着可选的".name"或"[index]"成分引用。以上第2点的例子说明了这种情况。
conversionflag可以是r,s或者a,分别是在该值上对repr,str或ascii内置函数的一次调用,该点使用较少。
formatspec指定了如何表示该值,包括字符宽度,对齐方式,补零,小数点精度等细节,并且以一个可选的数据类型编码结束。组成形式上描述如下:
[[fill]align][sign][#][0][width][.precision][typecode]
align可能是<, >, =或^,分别表示左对齐,右对齐,一个标记字符后的补充或居中对齐。可以结合fill值进行填充。
'{0:<10.2f}'.format(1.234) # '1.23 '
'{0:>10.2f}'.format(1.234) # ' 1.23'
'{0:^10.2f}'.format(1.234) # ' 1.23 '
'{0:7<10.2f}'.format(1.234) # '1.23777777'
'{0:7>10.2f}'.format(1.234) # '7777771.23'
'{0:7^10.2f}'.format(1.234) # '7771.23777'
'{0:7=+10.2f}'.format(1.234) # '+777771.23'
'{0:7<+10.2f}'.format(1.234) # '+1.2377777'
'{0:7>+10.2f}'.format(1.234) # '77777+1.23'
'{0:7^+10.2f}'.format(1.234) # '77+1.23777'
formatspec也包含嵌套的,只带有{}的格式化字符串,它从参数列表动态地获取值(和格式化列表中的*很相似)。
比如,{0:10}意味着一个10字符宽的字段中的第一个位置参数,{1:<10}意味着第2个位置参数在一个10字符宽度字段中左对齐,{0.platform:>10}意味着第一个参数的platform属性在10字符宽度的字段中右对齐。
'{0:10} = {1:10}'.format('spam', 123.4567) # 'spam = 123.4567'
'{0:>10} = {1:<10}'.format('spam', 123.4567) # ' spam = 123.4567 ''{0.platform:>10} = {1[item]:<10}'.format(sys, dict(item='laptop')) # ' win32 = laptop '
在格式化方法调用中,浮点数支持与%表达式中相同的类型代码和格式化声明。例如{2:g}表示,第三个参数默认地根据’g’浮点数表示格式化,{1:.2f}指定了带有两个小数位的"f"浮点数格式,{2:06.2f}添加一个6字符宽度的字段并且在左边补充0。
'{0:e}, {1:.3e}, {2:g}'.format(3.14159, 3.14159, 3.14159) # '3.141590e+00, 3.142e+00, 3.14159'
'{0:f}, {1:.2f}, {2:06.2f}'.format(3.14159, 3.14159, 3.14159) # '3.141590, 3.14, 003.14'
格式化方法也支持十六进制,八进制与二进制格式。实际上,字符串格式化方法是把整数格式化为指定的进制的某些内置函数的替代方法。
'{0:X}, {1:o}, {2:b}'.format(255, 255, 255) # 'FF, 377, 11111111'
格式化参数可以在格式化字符串中硬编码,或者通过嵌套的格式化语法从参数列表动态地获取,后者很像是格式化表达式中的星号语法。
'{0:.2f}'.format(1 / 3.0) # '0.33'
'%.2f' % (1 / 3.0) # '0.33'
'{0:.{1}f}'.format(1 / 3.0, 4) # '0.3333'
'%.*f' % (4, 1 / 3.0) # '0.3333'
在Python 2.6及之后的版本中与Python 3.0及之后的版本中还提供了一种新的内置format函数,用来格式化一个单独的项,通过运行主体对象方法__format__实现。
'{0:.2f}'.format(1.2345) # '1.23'
'%.2f' % 1.2345 # '1.23'
format(1.2345, '.2f') # '1.23'
以上,欢迎各位读者朋友提出意见或建议。
欢迎阅读笔者后续博客,各位读者朋友的支持与鼓励是我最大的动力!
written by jiong
大道至简,知易行难。