Python | 标准化输出

本文用以总结如何使用python得到各种数据的标准化输出。

Updated: 2022 / 12 / 20



时间与日期

参考这里 123


日期

参考这里 4

日期方法说明
今天datetime.date.today()输出结果类似于 2022-12-21
datetime.date.today().strftime('%y-%m-%d')输出效果类似于 22-12-21
今天 ± 指定时长(单位为秒/小时/天数/周数等)datetime.date.today + datetime.timedelta(weeks=2)输出效果类似于 2023-01-05

时间



字符串

可以使用split函数对字符串进行拆分,或者format来进行输出形式规整。

Python中的split()函数的使用方法
Python字符串格式化–format()方法


拆分

系统路径

常见字符串

dataframe中的批量拆分


格式规整

参考这里 56


format

语法

Python 2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {}: 来代替以前的 %

基本使用格式是:

<模板字符串>.format(<逗号分隔的参数>)

会返回一个新的字符串,参数从 0 开始编号,可以非常方便地连接不同类型的变量或内容。

format 函数可以接受不限个参数,位置可以不按顺序。也可以设置参数。也可以向 str.format() 传入对象。

format() 方法中 <模板字符串> 的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:

{<参数序号>: <格式控制标记>}

其中,<格式控制标记>用来控制参数显示时的格式,包括:<填充> <对齐> <宽度> <.精度> <类型> 6 个字段,这些字段都是可选的,可以组合使用,逐一介绍如下。

参数描述
填充指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换。
对齐指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
宽度指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际位数小于指定宽度,则位数将被默认以空格字符补充。
逗号 (,)<格式控制标记>中逗号()用于显示数字的千位分隔符
精度表示两个含义,由小数点(.)开头。对于浮点数,精度表示小数部分输出的有效位数。对于字符串,精度表示输出的最大长度。
类型表示输出整数和浮点数类型的格式规则。

对于整数类型,输出格式包括 6 种:
b: 输出整数的二进制方式;
c: 输出整数对应的 Unicode 字符;
d: 输出整数的十进制方式;
o: 输出整数的八进制方式;
x: 输出整数的小写十六进制方式;
X: 输出整数的大写十六进制方式;

对于浮点数类型,输出格式包括 4 种:
e: 输出浮点数对应的小写字母 e 的指数形式;
E: 输出浮点数对应的大写字母 E 的指数形式;
f: 输出浮点数的标准浮点形式;
%: 输出浮点数的百分形式。
浮点数输出时尽量使用<.精度>表示小数部分的宽度,有助于更好控制输出格式。

示例
  1. format 函数可以接受不限个参数,位置可以不按顺序;
print("{} {}".format("hello", "world"))        # 不设置指定位置,按默认顺序
# 'hello world'

print("{0} {1}".format("hello", "world"))      # 设置指定位置
# 'hello world'

print("{1} {0} {1}".format("hello", "world"))  # 设置指定位置
# 'world hello world'
  1. 可以通过字典、列表索引、元组索引设置参数;
print("姓名:{name};性别:{sex}".format(name="Alice", sex="female"))
# 姓名:Alice, 性别:female

dt = {"name": "Alice", "sex": "female"}
print("姓名:{name};性别:{sex}".format(**dt))
# 姓名:Alice;性别:female

lst = ['Alice', 'female']
print("姓名:{0};性别:{1}".format(*lst))  # "0" 是必须的
# 姓名:Alice, 性别:female

tpl = ('Alice', 'female')
print("姓名:{0};性别:{1}".format(*tpl))  
# 姓名:Alice;性别:female
  1. 可以向 str.format() 传入对象;
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的
# value 为: 6
  1. 指定格式
s = "PYTHON"
 
"{0:30}".format(s)
Out[17]: 'PYTHON                        '
 
"{0:>30}".format(s)
Out[18]: '                        PYTHON'
 
"{0:*^30}".format(s)
Out[19]: '************PYTHON************'
 
"{0:-^30}".format(s)
Out[20]: '------------PYTHON------------'
 
"{0:3}".format(s)
Out[21]: 'PYTHON'

"{0:.4}".format("PYTHON")
Out[22]: 'PYTH'

%

语法

% 操作符,格式如下:

%[(name)][flags][width].[precision]typecode
参数含义
(name)命名
flags可以有 +-' '或 0

+ 表示右对齐。
- 表示左对齐。
' ' 为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。
0 表示使用 0 填充。
width表示显示宽度
precision表示小数点后精度
typecode以下是类型码:

%s,字符串 (采用 str() 的显示)
%r,字符串 (采用 repr() 的显示)
%c,单个字符
%b,二进制整数
%d,十进制整数
%i,十进制整数
%o,八进制整数
%x,十六进制整数
%e,指数 (基底写为 e)
%E,指数 (基底写为 E)
%f,浮点数
%F,浮点数,与上相同
%g,指数( e )或浮点数 (根据显示长度)
%G,指数(E)或浮点数 (根据显示长度)
%%, 字符 "%"

示例
  1. 第一个 % 后面的内容为显示的格式说明,6 为显示宽度,3 为小数点位数,f 为浮点数类型;
    第二个 % 后面为显示的内容来源,输出结果右对齐,2.300 长度为 5,故前面有一空格,总长度为 6
print("%6.3f" % 2.3)
 2.300
  1. x 为表示 16 进制,显示宽度为 10,前面有 8 个空格,十进制 10 等同于 十六进制 0xa
print("%+10x" % 10)
    +a
  1. %-5x 负号为左对齐,显示宽度为 5,故 -a 后面有 3 个空格,十进制 10 等同于 十六进制 0xa
print("%-5x" % -10)
-a  
  1. width, precision 为两个整数。我们可以利用 * 来动态代入这两个量。比如:
print("%10.*f" % (4, 1.2))
  1.2000

数字

格式规整

参考这里 56


format

语法
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:-.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零 (填充左边, 宽度为 2)
5{:x<4d}5xxx数字补 x (填充右边, 宽度为 4)
10{:x<4d}10xx数字补 x (填充右边, 宽度为 4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记法
13{:>10d}13右对齐 (默认, 宽度为 10)
13{:<10d}13左对齐 (宽度为 10)
13{:^10d}13中间对齐 (宽度为 10)
11'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB 进制
进制

^, <, > 分别是居中、左对齐、右对齐,后面带宽度;
: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充;
+ 表示在正数前显示 +- 负数前显示 -
(空格)表示在正数前加空格。
bdox 分别是二进制、十进制、八进制、十六进制。


示例
"{0:-^20,}".format(1234567890)
Out[24]: '---1,234,567,890----'
 
"{0:-^20}".format(1234567890) #对比输出
Out[25]: '-----1234567890-----'

"{0:.2f}".format(12345.67890)
Out[29]: '12345.68'
 
"{0:H^20.3f}".format(12345.67890)
Out[30]: 'HHHHH12345.679HHHHHH'

"{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425)
Out[32]: '110101001,Ʃ,425,651,1a9,1A9'

"{0:e},{0:E},{0:f},{0:%}".format(3.14)
Out[33]: '3.140000e+00,3.140000E+00,3.140000,314.000000%'
 
"{0:.2e},{0:.2E},{0:.2f},{0:.2%}".format(3.14)
Out[34]: '3.14e+00,3.14E+00,3.14,314.00%

小数位数

参考这里 7


方法

round

Decimal

示例

round
a = 12.345
round_a = round(a, 2)            
# 12.35

Decimal
from decimal import Decimal
a = 12.345
decimal_a = Decimal(a).quantize(Decimal("0.00"))
# 12.35

参考链接

字符串

拆分

Python中的split()函数的使用方法

格式规整


  1. python格式化输出日期_1、Python 日期时间格式化输出 ↩︎

  2. Python3 日期和时间 ↩︎

  3. Python datetime 格式化字符串:strftime() ↩︎

  4. python中获取当前日期 ↩︎

  5. Python字符串格式化–format()方法 ↩︎ ↩︎

  6. Python format 格式化函数 ↩︎ ↩︎

  7. Python中保留两位小数的几种方法 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值