python之f-string字符串格式化

Python 在 2016 年的 3.6 版本引入了一种称为 f-string 的字符串格式化方法,它代表格式化字符串字面值。多年过去了,f-string 也成为了python 中应用最广泛的字符串格式化方法。

1.格式化数字

你可以数字进行各种格式化/转换。下面是一些示例:

  1. 设置小数位数(精度):使用==:.nf==,其中n是小数位数
  2. 十六进制转换
  3. 二进制转换
  4. 八进制转换
  5. 科学计数法
  6. 使用前导零填充数字:使用==:0n==,其中n是总字符数
number = 420

# decimal places
# 设置精度
print(f"number: {number:.2f}")

# hex conversion
# 十六进制转换
print(f"hex: {number:#0x}")

# binary conversion
# 二进制转换
print(f"binary: {number:b}")

# octal conversion
# 八进制转换
print(f"octal: {number:o}")

# scientific notation
# 科学计数法
print(f"scientific: {number:e}") 

# total number of characters
# 填充前导0
print(f"Number: {number:09}") 

number: 420.00
hex: 0x1a4
binary: 110100100
octal: 644
scientific: 4.200000e+02
Number: 000000420

那么对于大数字和百分比呢?

假设你有一个像苹果市值那样大的数字,你可以使用==:,,这里的逗号,==就是分隔符。

或者,你想让 f-string 打印出一个百分比值,你可以使用 :.2% 告诉 Python 设置 2 位小数并在字符串末尾添加一个百分号。

apple_marketcap = 2.626 * 10e12

print(f"{apple_marketcap:,}")  # comma separator

percentage = 10.394394

print(f"{percentage:.2%}")  # percentage

26,260,000,000,000.0

1039.44%

2.日期格式化

现在,如果你想格式化日期应该怎么做呢?让我们创建一个示例日期时间值。

就像你在你的应用程序中格式化日期一样,你可以在 f-string 中定义你想要的格式,例如 :<date_format>

下面我们将一个 UTC 日期时间格式化为:

  • 没有微秒
  • 仅日期
  • 仅时间
  • 带上午/下午的时间
  • 24 小时格式
import datetime

today = datetime.datetime.utcnow()
print(f"datetime : {today}\n")

print(f"date time: {today:%m/%d/%Y %H:%M:%S}")  # 没有微秒
print(f"date: {today:%m/%d/%Y}")  # 仅日期
print(f"time: {today:%H:%M:%S.%f}")  # 仅时间
print(f"time: {today:%H:%M:%S %p}")  # 时间带上上午/下午
print(f"time: {today:%H:%M}")  # 24小时制时间

datetime : 2024-02-29 03:42:27.293085

date time: 02/29/2024 03:42:27
date: 02/29/2024
time: 03:42:27.293085
time: 03:42:27 AM
time: 03:42

你还可以使用格式化选项做更多事情。

下面是如何从日期中获取星期几和一年中的第几天。

你还可以做一些有趣的事情,比如计算我们已经过了一年的多少天。

已经过去了 70%,时间过得真快!

import datetime

today = datetime.datetime.utcnow()

# Locale’s appropriate date and time representation
print(f"locale appropriate: {today:%c}")

# weekday
print(f"weekday: {today:%A}")  # 获取当前日期是星期几

# day of the year
print(f"day of year: {today:%j}")  # 获取当前日期是一年中的第几天

# how far are we into the year?
day_of_year = f"{today:%j}"  # 获取本年度已过去时间(百分比)
print(f"progress % year: {int(day_of_year) / 365 * 100:.2f}%")

locale appropriate: Thu Feb 29 04:06:56 2024
weekday: Thursday
day of year: 060
progress % year: 16.44%

3.字符串对齐

print("{:<16} {:<20}".format("IP Address", "MAC Address"))
print("{:<16} {:<20}".format("192.168.1.1", "00:11:22:33:44:55"))

在Python字符串格式化中,"{:<16} {:<20}" 是用于控制输出对齐和宽度的格式说明符,具体含义如下:

  1. 符号定义
    • <:左对齐符号
    • 数字:字段总宽度(单位:字符)
    • 空格填充:不足宽度时自动填充空格‌
  2. 具体解释
    • {:<16}:左对齐字段,总占16字符宽度
      示例: 若输出"192.168.1.1"(11字符),右侧补5个空格
    • {:<20}:左对齐字段,总占20字符宽度
      示例: 若输出"00:11:22:33:44:55"(17字符),右侧补3个空格‌

在Python中实现右对齐可通过多种方法实现,以下是具体操作方式及示例:

text = "Python"
right_aligned = text.rjust(10)  # 默认填充空格
print(repr(right_aligned))      # 输出:'    Python'

自定义填充字符‌:

text = "Hello"
right_aligned = text.rjust(10, '*')  
print(right_aligned)  # 输出:*****Hello

str.format()格式化

text = "Python"
print("{:>10}".format(text))  # 输出:'    Python'

动态指定宽度‌:

width = 15
print("{:>{width}}".format(text, width=width))  # 输出:'         Python'

使用f-string(Python 3.6+)

text = "Python"
width = 12
print(f"{text:>{width}}")  # 输出:'      Python'

带填充符号‌:

print(f"{text:*>10}")  # 输出:****Python

传统%格式化符

number = 123
print("%10d" % number)  # 输出:'       123'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值