07 Python 字符串全解析

文章目錄

    • 一. 字符串的定義
    • 二. 字符串的基本用法
      • 1. 訪問字符串中的字符
      • 2. 字符串切片
      • 3. 字符串拼接
      • 4. 字符串重復
      • 5.字符串比較
      • 6.字符串成員運算
    • 三. 字符串的常用方法
      • 1. `len()` 函數
      • 2. `upper()` 和 `lower()` 方法
      • 3. `strip()` 方法
      • 4. `replace()` 方法
      • 5. `split()` 方法
    • 四. 字符串的進階用法
      • 1. 格式化字符串
      • 2. 字符串的轉義字符
      • 3. 字符串的編碼與解碼
      • 4.原始字符串
      • 5.字符串的特色表示

在 Python 里,字符串屬于內置的數據類型,用來表示文本數據。

一. 字符串的定義

在 Python 中,定義字符串的方式多樣且靈活。單引號是常用的一種,如 str1 = ‘Hello, World!’,能簡潔地包裹普通文本。雙引號同樣適用,str2 = “Python is great”,與單引號在功能上并無本質區別,主要用于滿足不同場景下代碼風格或字符串內容中包含單引號的情況 。而三引號則獨具魅力,str3 = ‘’‘This is a multi - line string.’‘’,它允許創建多行字符串,對于需要保留格式的文本,如文檔注釋、詩歌等,極為便利。字符串中的字符類型豐富,除常見的英文字母、特殊符號外,中文字符、日文假名、希臘字母以及 Emoji 字符(如:💩、🐷、🀄?)等均可包含其中,極大拓展了字符串的表現力。。

# 使用單引號定義字符串
str1 = 'Hello, World!'
# 使用雙引號定義字符串
str2 = "Python is great"
# 使用三引號定義多行字符串
str3 = '''This is a
multi - line string.'''

二. 字符串的基本用法

1. 訪問字符串中的字符

字符串是一個序列,你可以通過索引來訪問其中的字符,索引從 0 開始。可以精準訪問其中字符

str4 = "Hello"
print(str4[0])  # 輸出 'H'
print(str4[-1])  # 輸出 'o',負索引表示從字符串末尾開始計數

2. 字符串切片

你可以使用切片來獲取字符串的一部分。

str5 = "Python Programming"
print(str5[0:6])  # 輸出 'Python'
print(str5[7:])  # 輸出 'Programming'

3. 字符串拼接

可以使用 + 運算符來拼接兩個或多個字符串。

str6 = "Hello"
str7 = " World"
print(str6 + str7)  # 輸出 'Hello World'

4. 字符串重復

使用 * 運算符可以重復字符串。

str8 = "Hi"
print(str8 * 3)  # 輸出 'HiHiHi'

5.字符串比較

可以使用比較運算符(如 ==、!=、<、>、<=、>=)對字符串進行比較。比較時是按照字符的 ASCII 碼值逐字符進行比較的。

str9 = "apple"
str10 = "banana"
print(str9 == str10)  # 輸出: False
print(str9 < str10)  # 輸出: True,因為 'a' 的 ASCII 碼值小于 'b'

6.字符串成員運算

使用 innot in運算符可以檢查一個字符串是否包含另一個字符串

str11 = "hello python"
print("python" in str11) # 輸出: True
print("javascript" not in str11) # 輸出:True

三. 字符串的常用方法

1. len() 函數

用于返回字符串的長度。

str9 = "Python"
print(len(str9))  # 輸出 6

2. upper()lower() 方法

upper() 方法將字符串中的所有字母轉換為大寫,lower() 方法將字符串中的所有字母轉換為小寫。

str10 = "Hello"
print(str10.upper())  # 輸出 'HELLO'
print(str10.lower())  # 輸出 'hello'

3. strip() 方法

用于去除字符串首尾的空白字符。

str11 = "   Hello   "
print(str11.strip())  # 輸出 'Hello'

4. replace() 方法

用于替換字符串中的指定子字符串。

str12 = "Hello, World"
print(str12.replace("World", "Python"))  # 輸出 'Hello, Python'

5. split() 方法

根據指定的分隔符將字符串分割成一個列表。

str13 = "apple,banana,cherry"
print(str13.split(","))  # 輸出 ['apple', 'banana', 'cherry']

四. 字符串的進階用法

1. 格式化字符串

Python 提供了多種字符串格式化的方式,如舊式的 % 格式化、str.format() 方法和 f - 字符串。

舊式的 % 格式化

name = "Alice"
age = 25
print("My name is %s and I am %d years old." % (name, age))

str.format() 方法

name = "Bob"
age = 30
print("My name is {} and I am {} years old.".format(name, age))

f - 字符串(Python 3.6+)

name = "Charlie"
age = 35
print(f"My name is {name} and I am {age} years old.")

2. 字符串的轉義字符

在字符串中,你可以使用轉義字符來表示一些特殊字符,如換行符 \n、制表符 \t 等。

print("Hello\nWorld")  # 輸出兩行:Hello 和 World

3. 字符串的編碼與解碼

在 Python 中,字符串可以進行編碼(將字符串轉換為字節序列)和解碼(將字節序列轉換為字符串)。

str14 = "你好"
# 編碼
bytes_str = str14.encode('utf-8')
# 解碼
decoded_str = bytes_str.decode('utf-8')
print(decoded_str)  # 輸出 '你好'

4.原始字符串

Python 中有一種以rR開頭的字符串,這種字符串被稱為原始字符串,意思是字符串中的每個字符都是它本來的含義,沒有所謂的轉義字符。例如,在字符串'hello\n'中,\n表示換行;而在r'hello\n'中,\n不再表示換行,就是字符\和字符n。大家可以運行下面的代碼,看看會輸出什么。

s1 = '\it \is \time \to \read \now'
s2 = r'\it \is \time \to \read \now'
print(s1)
print(s2)

說明:上面的變量s1中,\t\r\n都是轉義字符。\t是制表符(table),\n是換行符(new line),\r是回車符(carriage return)相當于讓輸出回到了行首。對比一下兩個print函數的輸出,看看到底有什么區別!

5.字符串的特色表示

Python 中還允許在\后面還可以跟一個八進制或者十六進制數來表示字符,例如\141\x61都代表小寫字母a,前者是八進制的表示法,后者是十六進制的表示法。另外一種表示字符的方式是在\u后面跟 Unicode 字符編碼,例如\u9a86\u660a代表的是中文“駱昊”。運行下面的代碼,看看輸出了什么。

s1 = '\141\142\143\x61\x62\x63'
s2 = '\u9a86\u660a'
print(s1)
print(s2)

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

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

相關文章

Java集成Zxing和OpenCV實現二維碼生成與識別工具類

Java集成Zxing和OpenCV實現二維碼生成與識別工具類 本文將介紹如何使用Java集成Zxing和OpenCV庫&#xff0c;實現二維碼的生成和識別功能。識別方法支持多種輸入形式&#xff0c;包括File對象、文件路徑和Base64編碼。 一、環境準備 添加Maven依賴 <dependencies><…

【專題刷題】二分查找(二)

&#x1f4dd;前言說明&#xff1a; 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄&#xff0c;按專題劃分每題主要記錄&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代碼&#xff1b;&#xff08;2&#xff09;優質解法 優質代碼&#xff1b;&#xff…

Java—ThreadLocal底層實現原理

首先&#xff0c;ThreadLocal 本身并不提供存儲數據的功能&#xff0c;當我們操作 ThreadLocal 的時候&#xff0c;實際上操作線程對象的一個名為 threadLocals 成員變量。這個成員變量的類型是 ThreadLocal 的一個內部類 ThreadLocalMap&#xff0c;它是真正用來存儲數據的容器…

Elasticsearch(ES)中的腳本(Script)

文章目錄 一. 腳本是什么&#xff1f;1. lang&#xff08;腳本語言&#xff09;2. source&#xff08;腳本代碼&#xff09;3. params&#xff08;參數&#xff09;4. id&#xff08;存儲腳本的標識符&#xff09;5. stored&#xff08;是否為存儲腳本&#xff09;6. script 的…

客戶聯絡中心能力與客戶匹配方式

在數字化時代&#xff0c;客戶聯絡中心作為企業與客戶溝通的核心樞紐&#xff0c;其服務能力與客戶需求的精準匹配至關重要。隨著客戶期望的不斷提升&#xff0c;傳統的“一刀切”服務模式已難以滿足個性化需求&#xff0c;如何通過智能化的手段實現服務能力與客戶的高效匹配&a…

深入理解網絡原理:UDP協議詳解

在計算機網絡中&#xff0c;數據的傳輸是通過各種協議實現的&#xff0c;其中用戶數據報協議&#xff08;UDP&#xff0c;User Datagram Protocol&#xff09;作為一種重要的傳輸層協議&#xff0c;廣泛應用于實時通信、視頻流、在線游戲等場景。本文將深入探討UDP協議的特性、…

vscode切換Python環境

跑深度學習項目通常需要切換python環境&#xff0c;下面介紹如何在vscode切換python環境&#xff1a; 1.點擊vscode界面左上角 2.在彈出框選擇對應kernel

【MCP Node.js SDK 全棧進階指南】中級篇(4):MCP錯誤處理與日志系統

前言 隨著MCP應用的規模和復雜性增長,錯誤處理與日志系統的重要性也日益凸顯。一個健壯的錯誤處理策略和高效的日志系統不僅可以幫助開發者快速定位和解決問題,還能提高應用的可靠性和可維護性。本文作為中級篇的第四篇,將深入探討MCP TypeScript-SDK中的錯誤處理與日志系統…

【Qt】文件

&#x1f308; 個人主頁&#xff1a;Zfox_ &#x1f525; 系列專欄&#xff1a;Qt 目錄 一&#xff1a;&#x1f525; Qt 文件概述 二&#xff1a;&#x1f525; 輸入輸出設備類 三&#xff1a;&#x1f525; 文件讀寫類 四&#xff1a;&#x1f525; 文件和目錄信息類 五&…

代碼隨想錄算法訓練營第五十八天 | 1.拓撲排序精講 2.dijkstra(樸素版)精講 卡碼網117.網站構建 卡碼網47.參加科學大會

1.拓撲排序精講 題目鏈接&#xff1a;117. 軟件構建 文章講解&#xff1a;代碼隨想錄 思路&#xff1a; 把有向無環圖進行線性排序的算法都可以叫做拓撲排序。 實現拓撲排序的算法有兩種&#xff1a;卡恩算法&#xff08;BFS&#xff09;和DFS&#xff0c;以下BFS的實現思…

Qt實現語言切換的完整方案

在Qt中實現語言動態切換需要以下幾個關鍵步驟&#xff0c;我將提供一個完整的實現方案&#xff1a; 一、準備工作 在代碼中使用tr()標記所有需要翻譯的字符串 cpp button->setText(tr("Submit")); 創建翻譯文件 在.pro文件中添加&#xff1a; qmake TRANSLATION…

面試中被問到mybatis與jdbc有什么區別怎么辦

1. 核心區別 維度JDBCMyBatis抽象層級底層API&#xff0c;直接操作數據庫高層持久層框架&#xff0c;封裝JDBC細節代碼量需要手動編寫大量樣板代碼&#xff08;連接、異常處理等&#xff09;通過配置和映射減少冗余代碼SQL管理SQL嵌入Java代碼&#xff0c;維護困難SQL與Java代…

用于協同顯著目標檢測的小組協作學習 2021 GCoNet(總結)

摘要 一 介紹 問題一&#xff1a;以往的研究嘗試利用相關圖像之間的一致性&#xff0c;通過探索不同的共享線索[12, 13, 14]或語義連接[15, 16, 17]&#xff0c;來助力圖像組內的共同顯著目標檢測&#xff08;CoSOD&#xff09;&#xff0c;什么意思&#xff1f; 一方面是探…

OpenCV 圖形API(62)特征檢測-----在圖像中查找最顯著的角點函數goodFeaturesToTrack()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 確定圖像上的強角點。 該函數在圖像或指定的圖像區域內找到最顯著的角點&#xff0c;如文獻[240]中所述。 函數使用 cornerMinEigenVal 或 cor…

MySQL引擎分類與選擇、SQL更新底層實現、分庫分表、讀寫分離、主從復制 - 面試實戰

MySQL引擎分類與選擇、SQL更新底層實現、分庫分表、讀寫分離、主從復制 - 面試實戰 故事背景&#xff1a; 今天&#xff0c;我們模擬一場互聯網大廠Java求職者的面試場景。面試官將針對MySQL的核心技術點進行提問&#xff0c;涵蓋MySQL引擎分類與選擇、SQL更新底層實現、分庫…

如何確保微型導軌的質量穩定?

微型導軌在精密機械中扮演著至關重要的角色&#xff0c;它們不僅影響設備的性能&#xff0c;還決定了產品的壽命。那么&#xff0c;如何通過一些關鍵步驟來提高微型導軌的穩定性呢&#xff1f; 1、嚴格篩選供應商&#xff1a;選擇具備高品質保證能力的供應商&#xff0c;確保原…

Golang編程拒絕類型不安全

簡介 在 Go 中&#xff0c;標準庫提供了多種容器類型&#xff0c;如 list、ring、heap、sync.Pool 和 sync.Map。然而&#xff0c;這些容器默認是類型不安全的&#xff0c;即它們可以接受任何類型的值&#xff0c;這可能導致運行時錯誤。為了提升代碼的類型安全性和可維護性&am…

什么是 JSON?學習JSON有什么用?在springboot項目里如何實現JSON的序列化和反序列化?

作為一個學習Javaweb的新手&#xff0c;理解JSON的序列化和反序列化非常重要&#xff0c;因為它在現代Web開發&#xff0c;特別是Spring Boot中無處不在。 什么是 JSON&#xff1f; 首先&#xff0c;我們簡單了解一下JSON (JavaScript Object Notation)。 JSON 是一種輕量級的…

iOS/Android 使用 C++ 跨平臺模塊時的內存與生命周期管理

在移動應用開發領域,跨平臺開發已經成為一種不可忽視的趨勢。隨著智能手機市場的持續擴張,開發者需要同時滿足iOS和Android兩大主流平臺的需求,而這往往意味著重復的工作量和高昂的維護成本。跨平臺開發的目標在于通過一套代碼庫實現多平臺的支持,從而降低開發成本、加速產…

【AAudio】A2dp sink創建音頻軌道的源碼流程分析

一、AAudio概述 AAudio 是 Android 8.0(API 級別 26)引入的 C/C++ 原生音頻 API,專為需要低延遲、高性能音頻處理的應用設計,尤其適用于實時音頻應用(如音頻合成器、音樂制作工具、游戲音效等)。 1.1 主要特點 低延遲:通過減少音頻數據在內核與用戶空間之間的拷貝,直…