Python基礎-03字元串

来源:https://www.cnblogs.com/surpassme/archive/2020/05/21/12927540.html
-Advertisement-
Play Games

3.字元型 字元型常見的方法如下所示: capitalize():字元串第一個英文單詞首字母大寫 title():如字元串有多個英文單詞,則每個單詞首字母大寫 split():對字元串指定的分隔符進行拆分,預設為空格符 find():返回匹配到的字元第一次出現的位置索引,找不到返回 1 replac ...


3.字元型

    字元型常見的方法如下所示:

  • capitalize():字元串第一個英文單詞首字母大寫
  • title():如字元串有多個英文單詞,則每個單詞首字母大寫
  • split():對字元串指定的分隔符進行拆分,預設為空格符
  • find():返回匹配到的字元第一次出現的位置索引,找不到返回 -1
  • replace(old, new):對字元串指定的字元進行替換
  • strip():刪除指定的字元
  • len():獲取字元串長度
  • +:常用於字元拼接
  • *:用於複製字元
  • str():將其他類型數據轉換為字元型
  • upper():將字元轉換為大寫
  • lower():將字元轉換為小寫

3.1 常用方法示例

a=" i love china "

print(f"字元串僅第一個單詞首字母大寫:{a.capitalize()}")
print(f"字元串僅每個單詞首字母大寫:{a.title()}")
print(f"對字元串進行拆分:{a.split()}")
print(f"對字元串進行查找:{a.find('i')}")
print(f"對字元串進行替換:{a.replace('i','H')}")
print(f"刪除指定的字元:{a.strip('i')}")
print(f"獲取字元串長度:{len(a)}")
print(f"字元串拼接:{a+' hello '}")
print(f"字元串複製:{a*3}")
print(f"將其他類型轉換為字元:{str(123)},{type(str(123))}")

輸出結果如下所示:

字元串僅第一個單詞首字母大寫: i love china 
字元串僅每個單詞首字母大寫: I Love China 
對字元串進行拆分:['i', 'love', 'china']
對字元串進行查找:1
對字元串進行替換: H love chHna 
刪除指定的字元: i love china 
獲取字元串長度:14
字元串拼接: i love china  hello 
字元串複製: i love china  i love china  i love china 
將其他類型轉換為字元:123,<class 'str'>

3.2 字元索引和切片

a=" i love china "
print(f"獲取第3個字元:{a[3]}")
print(f"獲取單詞love:{a[3:8]}")
print(f"對字元串進行倒序輸出:{a[::-1]}")

輸出結果如下所示:

獲取第3個字元:l
獲取單詞love:love 
#### 對字元串進行倒序輸出: anihc evol i 

3.3 字元串其他方法

    獲取字元串其他的方法和使用方法,可以使用

dir(str)
或
help(str)

3.4 字元串格式化

    字元中格式化主要指對輸出的字元串進行統一歸化處理。Python提供很多字元串格式化方式,常見分別是%-formatingstr.format()f-string模板字元串

f-string,如果要使用這種字元串格式化,Python版本必須大於3.6版本

3.4.1 %-formating

    這是一種C風格的字元串格式化,有時也稱為舊式字元串格式化,示例如下所示:

>>> name="Surpass"
>>> "Hello %s " % name
'Hello Surpass '

    %s格式說明將被替換的字元為字元串的,在這種舊式風格方式中,還可以用於控制輸出字元串的格式說明符,例如可以將數字轉換為其他進位或填充空格生成特定格式的表格或報告,如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> "Hello %s ,there is a 0x%x error" % (name,errorCode)
    'Hello Surpass ,there is a 0x1e240 error'

3.4.2 str.format()

    在Python3引入的一種新的字元串格式化方式。這種方法可以免去%操作這種特殊語法,使得字元格式化的語法更加規整,需要在字元串對象上調用format()函數。示例如下所示:

>>> name="Surpass"
>>> "Hello {}".format(name)
    'Hello Surpass'

    另外一種表現形式如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> "Hello {name} ,there is a 0x%{errorCode:x}".format(name=name,errorCode=errorCode)
	'Hello Surpass ,there is a 0x%1e240'

3.4.3 f-string

    str.format()這種字元串格式化非常強大,也沒有額外增加複雜性。但在Python 3.6 之後增加另外一個字元串格式方法,稱f-string(formatted string literal)。使用這種方法,可以在字元串常量內使用嵌入的Python表達式,這也是我個人的最愛,後面使用這種方式格式化字元串非常多,示例如下所示:

>>> name="Surpass"
>>> errorCode=123456
>>> f"Hello {name} ,there is a {errorCode:#x}"
	'Hello Surpass ,there is a 0x1e240'
>>> f"test add {sum((1,2,3,4,5))} bool test {True if 2>3 else False}"
'test add 15 bool test False'

3.4.4 模板字元串

    Python中的另一種字元串格式化是模板字元串(template string)。這種機制相對簡單,但也不太強大,可能會在某些情況中使用。示例如下所示:

from string import Template
>>> name="surpass"
>>> t=Template("Hello,$name")
>>> t.substitute(name=name)
	'Hello,surpass'

    模板字元串不能使用格式說明符。因此,為了讓前面的錯誤提示代碼正常,需要手動將int轉換為十六進位,示例如下所示:

from string import Template
>>> name="Surpass"
>>> erroeCode=123456
>>> tempateString="Hello $name ,there is a $errorCode"
>>> Template(tempateString).substitute(name=name,errorCode=hex(errorCode))
	'Hello Surpass ,there is a 0x1e240'

    模板字元串通常用於處理用戶輸入生成的格式字元串,使用這種方式比較安全。

3.4.5 字元串格式如何選擇

    Python提供這麼多的字元串格式方法,該如何選擇了?可以遵循以下原則

如果字元串由用戶提供,使用模板字元串來避免安全問題。如果不是,再考慮版本,Python 3.6 + 則使用f-string,否則使用str.format()

3.5 引號區別

    在Python,字元串可以使用單引號雙引號三引號表示,那這三者有什麼區別?從字面的意思來看,三者沒有任何區別,主要在是使用場景不一樣。

  • 單引號雙引號:兩者沒什麼區別,不像其他語言如Java/C#、單引號表示字元型,雙引號表示字元串,在Python全部按字元串處理

  • 三引號一般書寫形式為"""""",主要針對字元串非常長的情況,它允許字元串跨越多行,字元串也可以包含換行符、製表符及其他特殊字元等等。

  • 需要特別註意是,三種引號不能嵌套自身,如果要進行嵌套需要進行轉義,如下所示:

 a="a \"" # 正確
 a="a ""  # 報錯
  File "<ipython-input-1-8b21a118cfbc>", line 1
    a="a ""

本文同步在微信訂閱號上發佈,如各位小伙伴們喜歡我的文章,也可以關註我的微信訂閱號:woaitest,或掃描下麵的二維碼添加關註:
MyQRCode.jpg


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 有些情況下,希望點擊a鏈接不跳轉,可將href屬性設置為“javascript:;”,一般就可以了。 但下麵這種寫法: 仍然可點擊,會打開一個空白頁新鏈接,最後試了下,是因為target屬性導致的,將 去掉就可以了。 ...
  • 使用編輯器:Typora 下載官網:https://www.typora.io/ 學習教程:https://www.markdown.xyz/ 1、代碼塊 (1)源代碼模式 (2)菜單欄設置 菜單欄——【段落】—— 【代碼塊】 可自行選擇代碼語言 (3)快捷方式 英文輸入法狀態下,點擊三次 鍵盤數字 ...
  • 單頁面應用 概念 什麼是單頁應用呢?單頁應用的全稱是 single-page application,簡稱 SPA,它是一種網站應用的模型,它可以動態重寫當前的頁面來與用戶交互,而不需要重新載入整個頁面。單頁應用的流暢性讓 Web 應用更像桌面端或 Native 應用了。相對於傳統的 Web 應用, ...
  • 解決方法: $('#sub').unbind('click').click(function () { ... }); 每次綁定前先取消上次的綁定。 ...
  • 作者: MarkLin 學習目標: 1. 原生 node 封裝 2. 中間件 3. 路由 Koa 原理 一個 nodejs 的入門級 http 服務代碼如下, koa 的目標是更簡單化、流程化、模塊化的方式實現回調,我們希望可以參照 koa 用如下方式來實現代碼: 所以我們需要創建一個 文件,該文件 ...
  • 仿阿裡雲的錯誤提示 dialog - 您當前的會話已超時,請重新登錄。 ...
  • 輸出Map 申請單號<span>[[${listMain.REQ_CODE}]]</span> 輸出List<Map> <tr th:each="listD, listDStat : ${listDetail}"> <td th:text="${listDStat.count}"></td> <td ...
  • 使用 akka 實現,服務註冊、發現、心跳 消息類: package org.examplecase class RegisterWorkerInfo(id: String, cpu: Int, ram: Int);case class WorkerInfo(val id: String, val ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...