目錄
格式化实例
使用{}和format的新格式化
format格式化实例
旧式%格式化
首頁 後端開發 Python教學 Python全端之路系列之字串格式化

Python全端之路系列之字串格式化

Feb 09, 2017 am 10:42 AM
python

This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator.

Pythonhon百分號方式

  • format方式

  • 這兩種方式在

    Python2
Python3

中都適用,百分號方式是Python一直存在的,Python3中都適用,百分號方式是Python一直存在的,最近的方式。 舊式%格式化

參數格式

    %[(name)][flags][width].[precision]typecode
    登入後複製
    登入後複製
  • [(name)]
    • [(name)]

    • 可選,可供選擇的值有:

    說明

    +右對齊前加負數個負數個前數個負數個前數個負數個負數,535355555555555555525355552533字左對齊;正數前無符號,負數前加負號space右對齊;正數前加空格,負數前加負號0右對齊[width]可選,小數點後保留的位數
    符號,負數前加負號;用0填滿空格處
    • typecode

    必選,參數如下:

    • 值取得說明,參數如下:

    值取得說明傳入對象的__str__方法的回傳值,並將其格式化至指定位置

    • r

      取得傳入物件的__repr__方法的傳回值,並將其格式化至指定位置

    c

    整數:將數字轉換成其unicode對應的值,10進位範圍為0 o 將整數轉換成八 進位表示,並將其格式化到指定位置 x 將整數轉換成十六進位表示,並將其格式化到指定位置 d 將整數點數轉換成十進位表示,並將其格式化到指定位置 e 將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(小寫e) EE 將整數、浮點數轉換成科學計數法,並將其格式化到指定位置(大寫E) f將整數、浮點數轉換成浮點數表示,並將其格式化到指定位置(預設保留小數點後6位) F同上 g自動調整將整數、浮點數轉換成浮點型或科學計數法表示超過666位數法(超過66位數法) ,並將其格式化到指定位置(如果是科學計數則是e;) G自動調整將整數、浮點數轉換成浮點型或科學計數法表示(超過6位數用科學計數法),並將其格式化到指定位置(如果是科學計數則是E;) %當字串中存在格式化標誌時,需要用%%表示一個百分號


    注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

    格式化实例

    • 常用字符串格式化方式

     # %s 代表字符串
     >>> string = "My name is: %s" % ("ansheng")
     >>> string
    'My name is: ansheng'
    登入後複製
    • 字符串中出现%号的次数要与%之后所提供的数据项个数相同,如果需要插入多个数据,则需要将他们封装进一个元组。

     # %s是姓名,%d是年龄,必须是一个整数,不然会报错
     >>> string = "My name is: %s, I am %d years old" % ("anshen", 20)
     >>> string
    'My name is: anshen, I am 20 years old'
    登入後複製
    • 给参数起一个名字,后面传值的时候必须是一个字典

     # %(name)s是姓名,%(age)d是年龄,必须是一个整数,传入的值是一个字典格式
     >>> string = "My name is: %(name)s, I am %(age)d years old" % {"name":"anshen", "age":20}
     >>> string
    'My name is: anshen, I am 20 years old'
    登入後複製
    登入後複製
    • 去浮点数后面的位数

     # %.2f小数后面只取两位
     >>> string = "percent %.2f" % 99.97623
     >>> string
    'percent 99.98'
    登入後複製
    登入後複製
    • 给浮点数起一个名字(key)

     >>> string = "percent %(pp).2f" % {"pp":99.97623}
     >>> string
    'percent 99.98'
    登入後複製
    登入後複製
    • 两个百分号代表一个百分号

     >>> string = "percent %(pp).2f%%" % {"pp":99.97623}
     >>> string
    'percent 99.98%'
    登入後複製
    登入後複製

    使用{}和format的新格式化

    [[fill]align][sign][#][0][width][,][.precision][type]
    登入後複製
    登入後複製
    • [fill]

    可选,空白处填充的字符

    • align

    可选,对齐方式(需配合width使用)

    参数 说明
    <强制内容左对齐
    > 强制内容右对齐(默认)
    强制内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
    ^ 强制内容居中
    • [sign]

    可选,有无符号数字

    参数 说明
    + 正号加正,负号加负
    - 正号不变,负号加负
    space 正号空格,负号加负
    • [#]

    可选,对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

    • [,]

    可选,为数字添加分隔符,如:1,000,000

    • [width]

    可选,格式化位所占宽度

    • [.precision]

    可选,小数位保留精度

    • [type]

    可选,格式化类型

    • 传入” 字符串类型 “的参数

    参数 说明
    s 格式化字符串类型数据
    空白 未指定类型,则默认是None,同s
    • 传入“ 整数类型 ”的参数

    参数 说明
    b 将10进制整数自动转换成2进制表示然后格式化
    c 将10进制整数自动转换为其对应的unicode字符
    d 十进制整数
    o 将10进制整数自动转换成8进制表示然后格式化;
    x 将10进制整数自动转换成16进制表示然后格式化(小写x)
    X 将10进制整数自动转换成16进制表示然后格式化(大写X)
    • 传入“ 浮点型或小数类型 ”的参数

    参数 说明
    e 转换为科学计数法(小写e)表示,然后格式化;
    E 转换为科学计数法(大写E)表示,然后格式化;
    f 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    F 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    g 自动在e和f中切换
    G 自动在E和F中切换
    % 显示百分比(默认显示小数点后6位)

    format格式化实例

    • 第一种基本format格式化方式

     >>> string = "My name is: {}, I am {} years old, {} Engineer".format("ansheng",20,"Python")
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 第二种基本format格式化方式

     >>> string = "My name is: {}, I am {} years old, {} Engineer".format(*["ansheng",20,"Python"])
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 给传入的参数加一个索引

     >>> string = "My name is: {0}, I am {1} years old, {0} Engineer".format(*["ansheng",20,"Python"])
     >>> string
    'My name is: ansheng, I am 20 years old, ansheng Engineer'
    登入後複製
    登入後複製
    • 给参数起一个名字(key)

    >>> string = "My name is: {name}, I am {age} years old, {job} Engineer".format(name="ansheng",age=20,job="Python")
    >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 字典的方式

     >>> string = "My name is: {name}, I am {age} years old, {job} Engineer".format(**{"name":"ansheng","age":20,"job":"Python"})
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 索引内的索引

     >>> string = "My name is: {0[0]}, I am {0[1]} years old, {0[2]} Engineer".format(["Ansheng",20,"Python"],["An",11,"IT"])
     >>> string
    'My name is: Ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 制定参数类型

     >>> string = "My name is: {:s}, I am {:d} years old, {:f} wage".format("Ansheng",20,66666.55)
     >>> string
    'My name is: Ansheng, I am 20 years old, 66666.550000 wage'
    登入後複製
    登入後複製
    • 制定名称(key)的值类型

     >>> string = "My name is: {name:s}, I am {age:d} years old".format(name="Ansheng",age=20)
     >>> string
    'My name is: Ansheng, I am 20 years old'
    登入後複製
    登入後複製
    • 异类实例

     >>> string = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
     >>> string
    'numbers: 1111,17,15,f,F, 1587.623000%'
    登入後複製
    登入後複製
    • 索引

     >>> string = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
     >>> string
    'numbers: 1111,17,15,f,F, 1500.000000%'
    登入後複製
    登入後複製

    原文链接

    This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator.

    Python目前提供的字符串格式化方式有两种:

    • 百分号方式

    • format方式

    这两种方式在Python2Python3中都适用,百分号方式是Python一直内置存在的,format方式为近期才出来的。

    旧式%格式化

    • 参数格式

    %[(name)][flags][width].[precision]typecode
    登入後複製
    登入後複製
    • [(name)]

    可选,用于选择指定的key

    • [flags]

    可选,可供选择的值有:

    说明
    + 右对齐;正数前加正好,负数前加负号
    - 左对齐;正数前无符号,负数前加负号
    space 右对齐;正数前加空格,负数前加负号
    0 右对齐;正数前无符号,负数前加负号;用0填充空白处
    • [width]

    可选,占有宽度

    • .[precision]

    可选,小数点后保留的位数

    • typecode

    必选,参数如下:

    说明
    s 获取传入对象的__str__方法的返回值,并将其格式化到指定位置
    r 获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
    c 整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    o将整数转换成 八 进制表示,并将其格式化到指定位置
    x将整数转换成十六进制表示,并将其格式化到指定位置
    d将整数、浮点数转换成十进制表示,并将其格式化到指定位置
    e将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    E将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
    f将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
    F同上
    g自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
    G自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)
    %当字符串中存在格式化标志时,需要用 %%表示一个百分号


    注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

    格式化实例

    • 常用字符串格式化方式

     # %s 代表字符串
     >>> string = "My name is: %s" % ("ansheng")
     >>> string
    'My name is: ansheng'
    • 字符串中出现%号的次数要与%之后所提供的数据项个数相同,如果需要插入多个数据,则需要将他们封装进一个元组。

     # %s是姓名,%d是年龄,必须是一个整数,不然会报错
     >>> string = "My name is: %s, I am %d years old" % ("anshen", 20)
     >>> string
    'My name is: anshen, I am 20 years old'
    登入後複製
    • 给参数起一个名字,后面传值的时候必须是一个字典

     # %(name)s是姓名,%(age)d是年龄,必须是一个整数,传入的值是一个字典格式
     >>> string = "My name is: %(name)s, I am %(age)d years old" % {"name":"anshen", "age":20}
     >>> string
    'My name is: anshen, I am 20 years old'
    登入後複製
    登入後複製
    • 去浮点数后面的位数

     # %.2f小数后面只取两位
     >>> string = "percent %.2f" % 99.97623
     >>> string
    'percent 99.98'
    登入後複製
    登入後複製
    • 给浮点数起一个名字(key)

     >>> string = "percent %(pp).2f" % {"pp":99.97623}
     >>> string
    'percent 99.98'
    登入後複製
    登入後複製
    • 两个百分号代表一个百分号

     >>> string = "percent %(pp).2f%%" % {"pp":99.97623}
     >>> string
    'percent 99.98%'
    登入後複製
    登入後複製

    使用{}和format的新格式化

    [[fill]align][sign][#][0][width][,][.precision][type]
    登入後複製
    登入後複製
    • [fill]

    可选,空白处填充的字符

    • align

    可选,对齐方式(需配合width使用)

    参数 说明
    <强制内容左对齐
    > 强制内容右对齐(默认)
    强制内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
    ^ 强制内容居中
    • [sign]

    可选,有无符号数字

    参数 说明
    + 正号加正,负号加负
    - 正号不变,负号加负
    space 正号空格,负号加负
    • [#]

    可选,对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示

    • [,]

    可选,为数字添加分隔符,如:1,000,000

    • [width]

    可选,格式化位所占宽度

    • [.precision]

    可选,小数位保留精度

    • [type]

    可选,格式化类型

    • 传入” 字符串类型 “的参数

    参数 说明
    s 格式化字符串类型数据
    空白 未指定类型,则默认是None,同s
    • 传入“ 整数类型 ”的参数

    参数 说明
    b 将10进制整数自动转换成2进制表示然后格式化
    c 将10进制整数自动转换为其对应的unicode字符
    d 十进制整数
    o 将10进制整数自动转换成8进制表示然后格式化;
    x 将10进制整数自动转换成16进制表示然后格式化(小写x)
    X 将10进制整数自动转换成16进制表示然后格式化(大写X)
    • 传入“ 浮点型或小数类型 ”的参数

    参数 说明
    e 转换为科学计数法(小写e)表示,然后格式化;
    E 转换为科学计数法(大写E)表示,然后格式化;
    f 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    F 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
    g 自动在e和f中切换
    G 自动在E和F中切换
    % 显示百分比(默认显示小数点后6位)

    format格式化实例

    • 第一种基本format格式化方式

     >>> string = "My name is: {}, I am {} years old, {} Engineer".format("ansheng",20,"Python")
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 第二种基本format格式化方式

     >>> string = "My name is: {}, I am {} years old, {} Engineer".format(*["ansheng",20,"Python"])
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 给传入的参数加一个索引

     >>> string = "My name is: {0}, I am {1} years old, {0} Engineer".format(*["ansheng",20,"Python"])
     >>> string
    'My name is: ansheng, I am 20 years old, ansheng Engineer'
    登入後複製
    登入後複製
    • 给参数起一个名字(key)

    >>> string = "My name is: {name}, I am {age} years old, {job} Engineer".format(name="ansheng",age=20,job="Python")
    >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 字典的方式

     >>> string = "My name is: {name}, I am {age} years old, {job} Engineer".format(**{"name":"ansheng","age":20,"job":"Python"})
     >>> string
    'My name is: ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 索引内的索引

     >>> string = "My name is: {0[0]}, I am {0[1]} years old, {0[2]} Engineer".format(["Ansheng",20,"Python"],["An",11,"IT"])
     >>> string
    'My name is: Ansheng, I am 20 years old, Python Engineer'
    登入後複製
    登入後複製
    • 制定参数类型

     >>> string = "My name is: {:s}, I am {:d} years old, {:f} wage".format("Ansheng",20,66666.55)
     >>> string
    'My name is: Ansheng, I am 20 years old, 66666.550000 wage'
    登入後複製
    登入後複製
    • 制定名称(key)的值类型

     >>> string = "My name is: {name:s}, I am {age:d} years old".format(name="Ansheng",age=20)
     >>> string
    'My name is: Ansheng, I am 20 years old'
    登入後複製
    登入後複製
    • 异类实例

     >>> string = "numbers: {:b},{:o},{:d},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15, 15.87623, 2)
     >>> string
    'numbers: 1111,17,15,f,F, 1587.623000%'
    登入後複製
    登入後複製
    • 索引

     >>> string = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X}, {0:%}".format(15)
     >>> string
    'numbers: 1111,17,15,f,F, 1500.000000%'
    登入後複製
    登入後複製

    更多Python全栈之路系列之字符串格式化 相关文章请关注PHP中文网!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    <🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系統,解釋
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1665
    14
    CakePHP 教程
    1424
    52
    Laravel 教程
    1322
    25
    PHP教程
    1270
    29
    C# 教程
    1249
    24
    PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

    PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

    在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

    PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

    sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

    在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

    Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

    Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

    PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

    PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

    Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

    Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

    vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

    在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

    notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

    在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

    See all articles