python 3.6+版本支持
在
python 3.6
版本之前,python提供了如%-formatting
、str.format()
、string.Template
等方法对字符串进行格式化。每种格式化方法都有各自的优缺点,而f-strings
则提供了新的字符串格式化机制:文字字符串插值。注:
f-strings
,并没有替代原有的格式化方法。
# 基本用法
name = 'xiaoming'
age = 18
f'{name}今年{age}岁了.' # 'xiaoming今年18岁了.'
F'{name.upper()}今年{age}岁了.' # 'XIAOMING今年18岁了.'
- 字符串拼接操作
name = 'xiaoming'
age = 18
tuple_msg = ('xiaoming', 18)
dict_msg = {'name': 'xiaoming', 'age': 18}
# %-formatting写法
print('my name is %s.' % xiaoming) # => my name is xiaoming.
print('my name is %s, age is %s.' % (name, age)) # => my name is xiaoming, age is 18.
print('my name is %s, age is %s.' % tuple_msg) # => my name is xiaoming, age is 18.
print('my name is %s, age is %s.' % (dict_msg['name'], dict_msg['age'])) # => my name is xiaoming, age is 18.
print('个人信息%s' % (tuple_msg,)) # => 个人信息('xiaoming', 18),注意这边要加逗号
# str.format()写法
print('my name is {}.'.format(name)) # => my name is xiaoming.
print('my name is {}, age is {}.'.format(name, age)) # => my name is xiaoming, age is 18.
print('my name is {1}, age is {0}.'.format(age, name)) # => my name is xiaoming, age is 18.
print('my name is {}, age is {}.'.format(*tuple_msg)) # => my name is xiaoming, age is 18.
print('my name is {name}, age is {age}.'.format(name=dict_msg['name'], age=dict_msg['age'])) # => my name is xiaoming, age is 18.
print('my name is {name}, age is {age}.'.format(**dict_msg)) # => my name is xiaoming, age is 18.
# f-strings写法
print(f'my name is {name}, age is {age}.') # => my name is xiaoming, age is 18.
print(f'my name is {tuple_msg[0]}, age is {tuple_msg[1]}.') # => my name is xiaoming, age is 18.
print(f"my name is {dict_msg['name']}, age is {dict_msg['age']}.") # => my name is xiaoming, age is 18.注意引号的问题
print(f'{name}明年{age + 1}了.') # => xiaoming明年19了.
print(f'名字倒写过来{name[::-1]}.') # => 名字倒写过来gnimoaix.
print(f'4乘以2等于{(lambda x: x*2)(4)}.') # => 4乘以2等于8.
print(f"the set is {{1}}") # => {1},若拼接时需要用到{},则需要用多个{}
-
格式化
-
类型格式化
符号 示例 结果 含义 f"age = ({26:4d})" ‘age = ( 26)’ 整数 f"{3.1415:.2f}" ‘3.14’ 浮点数 f"{math.nan:F}" ‘NAN’ inf,nan等转换为大写 f"{0.024937:.2%}" ‘2.49%’ 百分比格式 /e f"{314.15:.2e}" ‘3.14e+02’ 科学计数法 f"age = ({‘26’:4s})" ‘age = (26 )’ 字符串 f"{36:b}" ‘100100’ 二进制整数 f"{36:o}" ‘44’ 八进制整数 /x f"{36:x}" ‘24’ 十六进制整数 -
对齐格式化
符号 含义 ^ 居中 < 左对齐 > 右对齐 -
日期格式化
符号 含义 示例 %y 两位数的年份表示 99 %Y 四位数的年份表示 2019 %m 月份 12 %d 一个月的第几天 31 %F 返回年月日(-连接) 2020-05-18 %D 返回日月年(/连接) 18/05/20 %b 本地简化月份名称 Aug %B 本地完整月份名称 August %a 本地简化星期名称 Mon %A 本地完整星期名称 Monday %j 一年中的第几天 001-366 %p 本地a.m和p.m AM/PM %H 24小时制 23 %I 12小时制 05 %M 分钟,补足2位 09 %S 秒,补足2位 09 %f 微秒,补足6位 554299 %x 本地相应的日期表示 18/05/20 %X 本地相应的时间表示 00:00:00 %% 百分号 % # 一些例子 import datetime d = datetime.datetime.now() print(f'{d:%F}') # => 2020-11-08 print(f'{d:%F %X}') # => 2020-11-08 16:39:42
-