Python格式化字符串的四種方法

Python格式化字符串的四種方法

1.使用 % 運算符

  • %s 是一個字符串的占位符,而 “World” 是替換它的值

    print("Hello, %s!" % "World")  # 輸出:Hello, World!
    
  • 你可以使用多個占位符

    注意:多個變量占位,變量要用括號括起來,并按照占位的順序填入

    name = "小孤獨"
    age = 16
    print("My name is %s and I am %s years old." % (name, age))
    # 輸出:My name is 小孤獨 and I am 16 years old.
    
  • Python中支持非常多的數據類型占位,最常用的如下:

    格式符號轉化
    %s將內容轉換成字符串,放入占位位置
    %d將內容轉換成整數,放入占位位置
    %f將內容轉換成浮點型,放入占位位置

    示例:

    name ="小孤獨"
    age = 16
    height = 1.56
    message ="我是%s,我的年齡是:%d,我的身高是:%f米" %(name, age, height)
    print(message)
    # 輸出:我是:小孤獨,我的年齡是:16,我的身高是:1.560000米
    

2.str.format() 方法

  • Python 2.6+ 引入的更靈活的格式化方法,使用 {} 作為占位符

  • 基本用法:

    print("Name: {}, Age: {}".format("小孤獨", 16))          # 位置參數
    print("Name: {1}, Age: {0}".format(16, "小孤獨"))        # 索引參數
    print("Name: {name}, Age: {age}".format(name="小孤獨", age=16))  # 關鍵字參數
    
  • 格式控制:

    # 數字格式化
    print("PI: {:.2f}".format(3.14159))  # 輸出:PI: 3.14(保留兩位小數)
    print("Hex: {:x}".format(255))       # 輸出:Hex: ff(十六進制)# 對齊與填充
    print("{:>10}".format("Hello"))      # 右對齊,寬度10 → '     Hello'
    print("{:<10}".format("Hello"))      # 左對齊,寬度10 → 'Hello     '
    print("{:*^10}".format("Hi"))        # 居中并用*填充 → '****Hi****'# 千位分隔符
    print("{:,}".format(1000000))        # 輸出:1,000,000
    
  • 引用對象屬性或元素:

    person = {"name": "小孤獨", "age": 16}
    print("Name: {p[name]}, Age: {p[age]}".format(p=person))  # 輸出:Name: 小孤獨, Age: 16
    

3.f-strings(格式化字符串字面量)

  • Python 3.6+ 引入,語法簡潔高效,在字符串前加 fF,變量直接嵌入 {}

  • 基本用法:

    name = "小孤獨"
    age = 16
    print(f"Name: {name}, Age: {age}")  # 輸出:Name: 小孤獨, Age: 16
    
  • 表達式和函數調用:

    name = "xiaogudu"
    age = 16
    # 直接計算表達式
    print(f"Next year's age: {age + 1}")  # 輸出:Next year's age: 17# 調用方法或函數
    print(f"Name in uppercase: {name.upper()}")  # 輸出:Name in uppercase: XIAOGUDU
    
  • 高級格式控制:

    pi = 3.14159
    print(f"PI: {pi:.2f}")               # 輸出:PI: 3.14
    print(f"Hex: {255:x}")               # 輸出:Hex: ff
    print(f"Aligned: {'text':>10}")      # 輸出:Aligned:       text
    
  • 多行字符串:

    name = "小孤獨"
    age = 16
    message = (f"Name: {name}\n"f"Age: {age}\n"f"Square of Age: {age ** 2}"
    )
    print(message)  
    # 輸出:Name: 小孤獨
    # Age: 16
    # Square of Age: 256
    

4.模板字符串(string.Template

  • Python 標準庫中的簡單模板,通過 $ 占位符替換,適合用戶可控的輸入(避免安全風險)

    from string import Template
    t = Template("Name: $name, Age: $age")
    print(t.substitute(name="小孤獨", age=16))  # 輸出:Name: 小孤獨, Age: 16
    

5.總結對比:

方法優點缺點適用場景
% 格式化簡單,兼容舊代碼功能有限,易出錯舊項目或簡單替換
str.format()功能強大,支持復雜格式語法稍冗長需要兼容 Python 2.6+
f-strings簡潔高效,支持表達式僅限 Python 3.6+現代 Python 代碼首選
string.Template安全,適合用戶輸入功能最少用戶可控模板

如有不當之處,歡迎批評指正!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78530.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78530.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78530.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Redis】緩存|緩存的更新策略|內存淘汰策略|緩存預熱、緩存穿透、緩存雪崩和緩存擊穿

思維導圖&#xff1a; Redis最主要的用途&#xff0c;三個方面&#xff1a; 1.存儲數據&#xff08;內存數據庫&#xff09; 2.緩存&#xff08;redis最常用的場景&#xff09; 3.消息隊列 一、什么是緩存 我們知道對于硬件的訪問速度來說&#xff0c;通常情況下&#xff1…

中陽視角下的趨勢確認策略:以數據為核心的交易思維

中陽視角下的趨勢確認策略&#xff1a;以數據為核心的交易思維 在動態交易市場中&#xff0c;如何在波動中捕捉相對確定的趨勢&#xff0c;是每一位操作者關心的問題。“中陽”理念主張通過結構性價格分析&#xff0c;判斷市場情緒的拐點。尤其是在出現大陽線或中陽線時&#x…

【C/C++】inline關鍵詞

C inline 關鍵字學習筆記 一、什么是 inline 函數&#xff1f; inline&#xff08;內聯&#xff09;是 C 中的一個關鍵字&#xff0c;表示“將函數的代碼直接插入到調用點”&#xff0c;以減少函數調用開銷&#xff0c;提升執行效率。 ? 注意&#xff1a;inline 是一種“請求…

React useMemo函數

第一個參數是回調函數&#xff0c;返回計算的結果&#xff0c;第二個參數是依賴項&#xff0c;該函數只監聽count1變量的變化 import { useReducer, useState } from react; import ./App.css;// 定義一個Reducer函數 根據不同的action進行不同的狀態修改 function reducer(st…

對比測評:為什么AI編程工具需要 Rules 能力?

通義靈碼 Project Rules 在開始體驗通義靈碼 Project Rules 之前&#xff0c;我們先來簡單了解一下什么是通義靈碼 Project Rules&#xff1f; 大家都知道&#xff0c;在使用 AI 代碼助手的時候&#xff0c;有時候生成的代碼不是自己想要的&#xff0c;或者說生成的代碼采納后…

Java學習手冊:MyBatis 框架作用詳解

一、MyBatis 簡介 MyBatis 是一款優秀的持久層框架&#xff0c;用于簡化 JDBC 開發。它通過將 Java 對象與數據庫表之間的映射關系進行配置&#xff0c;使得開發者可以使用簡單的 SQL 語句和 Java 代碼來完成復雜的數據操作。MyBatis 支持自定義 SQL 語句&#xff0c;提供了靈…

list的設計

#pragma once #include<assert.h> #include<iostream> using namespace std; namespace aqc {template<class T>struct list_node{list_node* _next;list_node* _prev;T _data;list_node(const T& xT())//加const防止權限放大&#xff0c;用引用減少拷貝…

基于 PyQt 的YOLO目標檢測可視化界面+ nuitka 打包

在人工智能和計算機視覺領域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;是一種廣泛使用的實時目標檢測算法。為了直觀地展示YOLO算法的檢測效果&#xff0c;我們使用Pyqt框架進行檢測結果的可視化&#xff0c;同時為了使其能夠脫離Python環境&#xff0c;我們…

2.1 閱讀錯題---02-04年

引言 2002年-2004年英語閱讀錯題匯總與分析總結。 一、02年閱讀 Text 1 題目&#xff1a;21題 題型&#xff1a;細節題 原因&#xff1a;單詞認錯了&#xff0c;原句中 in sympathy with 譯為 與…一致 &#xff1b;題干中的 sympathy 譯為 同情 題目&#xff1a;22題 題…

Axure疑難雜癥:中繼器制作下拉菜單(多級中繼器高級交互)

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 本文視頻課程記錄于上述地址第五章中繼器專題第11節 課程主題:中繼器制作下拉菜單 主要內容:創建條件選區、多級中繼器…

即刻啟程,踏上W55MH32高性能以太網單片機學習之路!

單芯片解決方案&#xff0c;開啟全新體驗——W55MH32 高性能以太網單片機 W55MH32是WIZnet重磅推出的高性能以太網單片機&#xff0c;它為用戶帶來前所未有的集成化體驗。這顆芯片將強大的組件集于一身&#xff0c;具體來說&#xff0c;一顆W55MH32內置高性能Arm Cortex-M3核心…

C++負載均衡遠程調用學習之上報功能與存儲線程池

目錄 1. Lars-reportV0.1 report模塊介紹 2.Lars-reporterV0.1 reporter項目目錄構建 3.Lars-ReporterV0.1 數據表和proto協議環境搭建 4.Lars-ReporterV0.1上報請求業務處理 5.Lars-ReporterV0.1上報請求模塊的測試 6.Lars-ReporterV0.2開辟存儲線程池-網絡存儲分離 1. L…

LabVIEW三軸電機控制

在工業自動化迅猛發展的當下&#xff0c;多軸伺服電機控制系統在制造業、3D 打印等眾多領域的需求與日俱增。它不僅要實現高精度的單軸運動控制&#xff0c;還需保障多軸協同作業的精準度&#xff0c;對響應速度也有嚴格要求。LabVIEW 開發多軸伺服電機控制系統&#xff0c;有效…

驅動開發硬核特訓 · Day 27(下篇):深入掌握 Common Clock Framework 架構與實戰開發

節。 在本篇內容中&#xff0c;我們將圍繞 Linux 內核中的時鐘子系統核心架構 —— Common Clock Framework&#xff08;簡稱 CCF&#xff09;展開深入講解&#xff0c;目標是幫助你全面理解其設計理念、主要數據結構、注冊流程、驅動實現方式&#xff0c;以及如何基于 NXP i.M…

數據庫基礎:數據庫類型與MySQL特點詳解

一、數據庫的主要類型 1. 關系型數據庫(RDBMS) 特點:基于關系模型,數據以表格形式存儲 代表產品:MySQL、Oracle、SQL Server、PostgreSQL 優勢:ACID事務支持、強一致性、成熟的SQL標準 適用場景:需要復雜查詢和事務支持的場景 2. 非關系型數據庫(NoSQL) 文檔型數據庫:Mo…

49認知干貨:產品的生命周期及類型匯總

49章:產品的生命周期與類型劃分 宇宙是運動的而非靜止的,任何事物亦是如此。只要是存在的事物,便必然存在周期性變化,就像四季更替中的冬日枯樹、春日新芽、夏日繁茂與秋日凋零。 這也意味著:事物的發展,離不開周期的更迭與演化,死亡并非終點,而是一種新的循環轉變。 …

【2025最新】為什么用ElasticSearch?和傳統數據庫MySQL與什么區別?

Elasticsearch 深度解析&#xff1a;從原理到實踐 一、為什么選擇 Elasticsearch&#xff1f; 數據模型 Elasticsearch 是基于文檔的搜索引擎&#xff0c;它使用 JSON 文檔來存儲數據。在 Elasticsearch 中&#xff0c;相關的數據通常存儲在同一個文檔中&#xff0c;而不是分散…

Docker安裝Gitblit(圖文教程)

本章教程,使用Docker安裝部署Gitblit。 一、Gitblit簡介 Gitblit 是一個基于 Java 的 Git 倉庫管理工具,主要用于在局域網或小型團隊環境中搭建私有 Git 服務器。它提供了一個簡單易用的 Web 界面,用于瀏覽代碼、管理倉庫和用戶權限等。 二、拉取鏡像 sudo docker pull git…

nDCG(歸一化折損累計增益) 是衡量排序質量的指標,常用于搜索引擎或推薦系統

nDCG&#xff08;歸一化折損累計增益&#xff09; 是衡量排序質量的指標&#xff0c;常用于搜索引擎或推薦系統。核心思想是&#xff1a;排名越靠前的高質量結果&#xff0c;對整體評分的貢獻越大&#xff0c;但后續結果的貢獻會逐漸“打折”。最終通過對比實際排序與理想排序的…

《從線性到二維:CSS Grid與Flex的布局范式革命與差異解析》

在前端開發的廣袤宇宙中&#xff0c;CSS布局技術宛如閃耀的星辰&#xff0c;不斷革新與演進&#xff0c;為構建絢麗多彩的網頁世界提供了堅實的支撐。其中&#xff0c;CSS Grid布局與Flex布局作為兩顆璀璨的明星&#xff0c;以其獨特的魅力和強大的功能&#xff0c;深受開發者們…