Python字符串处理及打印(一)

本文详细介绍了Python中格式化输出的三种方式:%s/d格式、format()函数和f-string,涵盖了数字、datetime格式、位数对齐、数字符号以及特殊格式描述符的使用。同时探讨了datetime的日期格式化和各种技术细节。
摘要由CSDN通过智能技术生成

目录

一. 格式化输出的三种方式

二. datatime格式化

三. 位数

四. 左/右/居中对齐

五. 数字符号格式化

数字符号相关格式描述符

# 切换数字显示方式


一. 格式化输出的三种方式

name = "Max"
age = 18

# 最古老的用法, %s和%d表示格式
print("%s is %d years old" % (name, age))    # Max is 18 years old
# 在python 3.0后, 可以使用format()
print("{} is {} years old".format(name, age))    # Max is 18 years old

# {}中带数字,对应后面参数的索引
print("{1} is {0} years old".format(age, name))    # Max is 18 years old
# 在python 3.6, 可以使用f""
print(f"{name} is {age} years old")    # Max is 18 years old

# {}中使用表达式
bags = 3
apples_in_bag = 12
print(f"There are total {bags * apples_in_bag} apples")    # There are total 36 apples

# {}中使用字典
user = {"name": "Max", "age": 18}
print(f"{user['name']} is {user['age']} years old")    # Max is 18 years old

# {}中使用函数
def ret_max(x, y):
    return x if x > y else y

a, b = 3, 5
print(f"Max of {a} and {b} is {ret_max(a, b)}")    # Max of 3 and 5 is 5

格式描述符

含义与作用

适用变量类型

s

普通字符串格式

字符串

b

二进制整数格式

整数

c

字符格式,按unicode编码将整数转换为对应字符

整数

d

十进制整数格式

整数

o

八进制整数格式

整数

x

十六进制整数格式(小写字母)

整数

X

十六进制整数格式(大写字母)

整数

e

科学计数格式,以 e 表示 ×10^

浮点数、复数、整数(自动转换为浮点数)
E

与 e 等价,但以 E 表示 ×10^

浮点数、复数、整数(自动转换为浮点数)
f

定点数格式,默认精度(precision)是6

浮点数、复数、整数(自动转换为浮点数)

F

 f 等价,但将 nan 和 inf 换成 NAN 和 INF

浮点数、复数、整数(自动转换为浮点数)

g

通用格式,小数用 f,大数用 e

浮点数、复数、整数(自动转换为浮点数)

G

与 G 等价,但小数用 F,大数用 E

浮点数、复数、整数(自动转换为浮点数)

二. datatime格式化

import datetime
now = datetime.datetime.now()
print(f'{now:%Y-%m-%d %H:%M:%S}')    # 2022-11-09 21:57:55

格式描述符

含义

显示样例

%a星期几(缩写)'Sun'
%A

星期几(全名)

'Sunday'

%w

星期几(数字,0 是周日,6 是周六)

'0'

%u

星期几(数字,1 是周一,7 是周日)

'7'

%d

日(数字,以 0 补足两位)

'07'

%b

月(缩写)

'Aug'

%B

月(全名)

'August'

%m

月(数字,以 0 补足两位)

'08'

%y

年(后两位数字,以 0 补足两位)

'14'

%Y

年(完整数字,不补零)

'2014'

%H

小时(24小时制,以 0 补足两位)

'23'

%I

小时(12小时制,以 0 补足两位)

'11'

%p

上午/下午

'PM'

%M

分钟(以 0 补足两位)

'23'

%S

秒钟(以 0 补足两位)

'56'

%f

微秒(以 0 补足六位)

'553777'

%z

UTC偏移量(格式是 ±HHMM[SS],未指定时区则返回空字符串)

'+1030'

%Z

时区名(未指定时区则返回空字符串)

'EST'

%j

一年中的第几天(以 0 补足三位)

'195'

%U

一年中的第几周(以全年首个周日后的星期为第0周,以 0 补足两位)

'27'

%w

一年中的第几周(以全年首个周一后的星期为第0周,以 0 补足两位)

'28'

%V

一年中的第几周(以全年首个包含1月4日的星期为第1周,以 0 补足两位)

'28'

三. 位数

val = 1.5687
print(f'{val:.2f}')    # 1.57
print(f'{val:.5f}')    # 1.56870

chs = "ASDFGHJK"
print(f'{chs:.4}')    # ASDF

注1:width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。

注2:width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符。

四. 左/右/居中对齐

< 左对齐(字符串默认对齐方式)

> 右对齐(数值默认对齐方式)

^ 居中

0width 表示用0补足宽度(参考下方示例)

注1:0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。

# Format width
num = "Nu"
sq = "squ"
cube = "cube"
print(f"{num:>2} {sq:>5} {cube:>7}")
for i in range(1, 21, 3):
    print(f"{i:02} {i*i:5} {i*i*i:7}")

'''
Nu   squ    cube
01     1       1
04    16      64
07    49     343
10   100    1000
13   169    2197
16   256    4096
19   361    6859
'''


# Format string
s1 = 'a'
s2 = 'bb'
s3 = 'ccc'
s4 = 'dddd'
s5 = '~'
print(f'{s1:>16}')
print(f'{s2:>16}')
print(f'{s3:>16}')
print(f'{s4:>16}')
print(f'{s5:>016}')    # 用0不足宽度

'''
               a
              bb
             ccc
            dddd
000000000000000~
'''

五. 数字符号格式化

a = 300
print(f"int: {a:d}")    # int: 300
print(f"hex: {a:#x}")    # hex: 0x12c
print(f"oct: {a:#o}")    # oct: 0o454
print(f"sci: {a:e}")    # sci: 3.000000e+02


b = 123
c = -123
print(f"{b:+}")    # +123
print(f"{c:+}")    # -123
print(f"{b:-}")    # 123
print(f"{c:-}")    # -123
print(f"{b: }")    #  123
print(f"{c: }")    # -123

数字符号相关格式描述符

注:仅适用于数值类型。

格式描述符

含义与作用

+

负数前加负号(-),正数前加正号(+)

-

负数前加负号(-),正数前不加任何符号(默认)

空格

负数前加负号(-),正数前加一个空格

# 切换数字显示方式

注1:仅适用于数值类型。

注2:# 对不同数值类型的作用效果不同.

数值类型

不加#(默认)

加#

区别

二进制整数

'1111011'

'0b1111011'

开头是否显示 0b

八进制整数

'173'

'0o173'

开头是否显示 0o

十进制整数

'123'

'123'

无区别

十六进制整数(小写字母)

'7b'

'0x7b'

开头是否显示 0x

十六进制整数(大写字母)

'7B'

'0X7B'

开头是否显示 0X

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值