python3更高级的字符串操作库-f_Strings

python 3.6+版本支持

python 3.6 版本之前,python提供了如%-formattingstr.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%’百分比格式
      /ef"{314.15:.2e}"‘3.14e+02’科学计数法
      f"age = ({‘26’:4s})"‘age = (26 )’字符串
      f"{36:b}"‘100100’二进制整数
      f"{36:o}"‘44’八进制整数
      /xf"{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.mAM/PM
      %H24小时制23
      %I12小时制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
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值