目录
- 字符串常量(String constants)
- 使用format格式化字符串
- 按位置输出字符
- 按名字输出字符
- 按属性输出字符
- 按子项输出字符
- 替代%s与%r
- 文本对齐和指定宽度
- 替代%+f, %-f, 与 % f
- 替代%x和%o并将值转换为不同的基数
- 使用逗号作为千位分隔符
- 表示百分数
- 指定日期显示格式
- 更复杂的例子
- 模板字符串(Template strings)
字符串常量(String constants)
# -*- coding: utf-8 -*-
import string
# 1
print(string.ascii_letters) # 大小写字母
# 输出:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
# 2
print(string.ascii_lowercase) # 小写字母
# 输出:abcdefghijklmnopqrstuvwxyz
# 3
print(string.ascii_uppercase) # 大写字母
# 输出:ABCDEFGHIJKLMNOPQRSTUVWXYZ
# 4
print(string.digits) # 10进制
# 输出:0123456789
# 5
print(string.hexdigits) # 16进制
# 输出:0123456789abcdefABCDEF
# 6
print(string.octdigits) # 8进制
# 输出:01234567
# 7
print(string.punctuation) # 标点
# 输出:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
# 8
print(string.printable) # 可打印字符
# 输出:0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
# 9
print(string.whitespace) # 空白字符
# 输出:空格、制表符,换行符,返回,换页符等
使用format格式化字符串
按位置输出字符
# -*- coding: utf-8 -*-
# 1
print('{0}, {1}, {2}'.format('a', 'b', 'c'))
# 输出:a, b, c
# 2
print('{2}, {1}, {0}'.format('a', 'b', 'c'))
# 输出:c, b, a
# 3
print('{2}, {1}, {0}'.format(*'abc'))
# 输出:c, b, a
# 4
print('{0}, {1}, {0}'.format('a', 'b'))
# 输出:a, b, a
按名字输出字符
# -*- coding: utf-8 -*-
# 1
print('Me:{firstName} {lastName}'.format(lastName='X', firstName='Coder'))
# 输出:Me:Coder X
# 2
MyName = {'firstName': 'Coder', 'lastName': 'X'}
print('Me:{firstName} {lastName}'.format(**MyName))
# 输出:Me:Coder X
按属性输出字符
# -*- coding: utf-8 -*-
# 1
x = 1 - 2j # x是一个复数:实数部分和虚数部分都是浮点数,虚数部分必须有j或J
print('real: {0.real}, imaginary {0.imag}'.format(x))
# 输出:real: 1.0, imaginary -2.0
# 2
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return 'Point(x:{0.x}, y:{0.y})'.format(self)
__repr__ = __str__
p = Point(1, 3)
print(p)
# 输出:Point(x:1, y:3)
按子项输出字符
# -*- coding: utf-8 -*-
# 1
x = (2, 3)
print('x is {0[0]}, {0[1]}'.format(x))
# 输出:x is 2, 3
替代%s与%r
# -*- coding: utf-8 -*-
# 1
print("{!r}, {!s}".format('repr', 'str'))
# 输出:'repr', str
# 说明: {!r}中的r表repr(),输出带''号;s表str(),输出不代引号
文本对齐和指定宽度
# -*- coding: utf-8 -*-
# 1
print('start, {:<30}, end.'.format('left aligned'))
# 输出:start, left aligned , end.
# 说明: 向左对齐,字宽30位,不足默认用空白填充
# 2
print('start, {:>30}, end.'.format('right aligned'))
# 输出:start, right aligned, end.
# 说明: 向右对齐,字宽30位,不足默认用空白填充
# 3
print('start, {:*^30}, end.'.format('right aligned'))
# 输出:start, ********right aligned*********, end.
# 说明: 居中对齐,字宽30位,不足用*号填充
替代%+f, %-f, 与 % f
# -*- coding: utf-8 -*-
# 1
print('{:+0.2f}; {:+f}'.format(3.14, -3.14))
# 输出:+3.140000; -3.140000
# 说明: 正负号常显示
# 2
print('{: f}; {: f}'.format(3.14, -3.14))
# 输出: 3.140000; -3.140000
# 说明: 正号用空白表示
# 3
print('{:-f}; {:-f}'.format(3.14, -3.14))
# 输出:3.140000; -3.140000
# 说明: 只显示负号
替代%x和%o并将值转换为不同的基数
# -*- coding: utf-8 -*-
# 1
print("int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42))
# 输出:int: 42; hex: 2a; oct: 52; bin: 101010
# 2
print("int: {0:#d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42))
# 输出: int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010
使用逗号作为千位分隔符
# -*- coding: utf-8 -*-
# 1
print('{:,}'.format(1234567890))
# 输出:1,234,567,890
表示百分数
# -*- coding: utf-8 -*-
# 1
point = 2
total = 5
print('result: {:0.2%}'.format(point/total))
# 输出:result: 40.00%
指定日期显示格式
# -*- coding: utf-8 -*-
import datetime
# 1
d = datetime.datetime(2019, 4, 29, 15, 11, 58)
print('{:%Y-%m-%d %H:%M:%S}'.format(d))
# 输出:2019-04-29 15:11:58
更复杂的例子
# -*- coding: utf-8 -*-
for align, text in zip('<^>', ['left', 'center', 'right']):
print( '{0:{fill}{align}16}'.format(text, fill=align, align=align))
# 输出:
# left<<<<<<<<<<<<
# ^^^^^center^^^^^
# >>>>>>>>>>>right
模板字符串(Template strings)
模板字符串的主要用例是用于国际化,下面用一个例子简单介绍一下:
# -*- coding: utf-8 -*-
from string import Template
s = Template('$who $do $what.') # 其中$identifier,相当于是在定义变量
print(s.substitute(who='I', do='love', what='you'))
# 输出:I love you.
print(s.substitute(who='我', do='爱', what='你'))
# 输出:我 爱 你.
# s.substitute(who='我', do='爱')
# 说明:substitute函数接收的参数内容与定义不相符时,报KeyError异常
print(s.safe_substitute(who='我', do='爱'))
# 输出:我 爱 $what.
# 说明:safe_substitute函数在少参数时,把参数原样输出。
以上就是模板字符串的大致用法。