Python 文本序列類型(字元串類型 str)[學習 Python 必備基礎知識][看此一篇就夠了][長字元串][原始字元串 r][字元串常用方法]

来源:https://www.cnblogs.com/manongajie/archive/2020/05/20/12925791.html
-Advertisement-
Play Games

在 Python 中處理文本數據是使用 `str` 對象,也稱為`字元串類型`。 字元串是由 Unicode 碼位構成的不可變序列。 ...


您的“關註”和“點贊”,是信任,是認可,是支持,是動力......

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

在這裡插入圖片描述

目錄

1 字元串類型概述

在 Python 中處理文本數據是使用 str 對象,也稱為字元串類型

字元串是由 Unicode 碼位構成的不可變序列。

簡單理解,若幹個字元(可以包含字母、標點、特殊符號、中文、日文等全世界的所有文字)的集合就是一個字元串。

字元串字面值有多種不同的寫法,如下所示:

  • 單引號: '允許包含有 "雙" 引號'
  • 雙引號: "允許包含有 '單' 引號"
  • 三重引號: '''三重單引號'''"""三重雙引號"""。使用三重引號的字元串可以跨越多行,其中所有的空白字元都將包含在該字元串字面值中。

舉例如下所示:

'微信公眾號:碼農阿傑'
'微信公眾號:"碼農阿傑"'  # 單引號允許包含雙引號
"CSDN 博客地址 https://blog.csdn.net/manongajie"
"CSDN 博客地址 'https://blog.csdn.net/manongajie'"  # 雙引號允許包含單引號
'''
弱水三千,只取一瓢飲;
嬌玫萬朵,獨摘一枝憐。
'''
"""
滿天星斗,只見一顆芒;
人海茫茫,唯系你一人。
"""

2 處理字元串中的引號問題

2.1 分析字元串中的引號問題

當字元串內容中出現引號時(指的是字元串中出現的引號與定義字元串的引號相同),我們需要進行處理,否則 Python 解釋器會報錯。

舉例如下所示:

print('I'm CodeFarmer_Ajie')

運行結果:

    print('I'm CodeFarmer_Ajie')
             ^
SyntaxError: invalid syntax

可以這麼理解,因為 Python 解釋器會把遇到的第一個單引號到再次遇到單引號之間的內容當做字元串,也就是說 Python 解釋器會將字元串中的單引號與第一個單引號配對,這樣就會把'I'當成字元串,而後面的m CodeFarmer_Ajie''就變成了多餘的內容,從而導致語法錯誤。

對於這種問題,我們有兩種處理方法,如下內容所示。

2.2 處理方法一:對引號進行轉義

在需要轉義的引號前添加轉義字元 \即可。

舉例如下所示:

str_demo = 'I\'m CodeFarmer_Ajie'

print(str_demo)

運行結果:

I'm CodeFarmer_Ajie

2.3 處理方法二:使用不同的引號包含字元串

  • 如果字元串內容中出現了單引號,那麼我們可以使用雙引號包圍字元串。
  • 如果字元串內容中出現了雙引號,那麼我們可以使用單引號包圍字元串。

舉例如下所示:

str_demo1 = "I'm CodeFarmer_Ajie"  # 如果字元串內容中出現了單引號,那麼我們可以使用雙引號包圍字元串。
str_demo2 = '英文雙引號為:"'

print(str_demo1)
print(str_demo2)

運行結果:

I'm CodeFarmer_Ajie
英文雙引號為:"

3 處理字元串的換行問題

Python 對程式的換行有嚴格的語法要求。

想要換行書寫一個比較長的字元串,必須在行尾添加反斜杠 \

舉例如下所示:

str_demo = '弱水三千,只取一瓢飲;\
           嬌玫萬朵,獨摘一枝憐。'


print(str_demo)

運行結果:

弱水三千,只取一瓢飲;           嬌玫萬朵,獨摘一枝憐。

4 Python 長字元串

由三個雙引號"""或者三個單引號'''包圍的字元串,被稱為 Python 長字元串

簡單理解,長字元串,就是可以直接換行(不用加反斜杠\)書寫的字元串。

當程式中有大段文本內容需要寫成字元串時,建議使用長字元串形式,因為長字元串形式非常強大,可以在字元串中放置任何內容,包括單引號和雙引號。

語法格式如下所示:

"""長字元串內容"""
'''長字元串內容'''

《Python 註釋詳解》文章中有講到可以使用三個單引號或者三個雙引號對多行內容進行註釋,這其實就是 Python 的長字元串。如果長字元串沒有賦值給任何變數,那麼這個長字元串就不會起到任何作用,和一段普通的文本無異,相當於註釋(註意:Python 解釋器並不會忽略長字元串,同樣會按照語法解析,只不過長字元串沒有實際作用)。

5 Python 原始字元串

5.1 Python 原始字元串概述

在普通字元串或者長字元串的開頭加上 r 首碼,就變成了原始字元串。

在原始字元串中,反斜杠 \ 不會被當作轉義字元,所有的內容都會保持原來的樣子。

格式如下所示:

str1 = r'原始字元串內容'
str2 = r"""原始字元串內容"""

舉例如下所示:

str_demo = r'D:\Data\Tools\Python382\python.exe'

print(str_demo)

運行結果:

D:\Data\Tools\Python382\python.exe

5.2 處理原始字元串中的引號問題

普通格式的原始字元串中如果出現了引號,是需要對引號進行轉義的。否則 Python 照樣無法對字元串的引號精確配對。

但是,又和普通字元串有所不同,此時用於轉義的反斜杠會變成字元串內容的一部分。

註意:Python 原始字元串中的反斜杠仍然會對引號進行轉義,因此原始字元串的結尾處不能有反斜杠,否則字元串結尾處的引號會被轉義,導致字元串不能正確結束。

舉例如下所示:

str_demo = r'I\'m CodeFarmer'
print(str_demo)

運行結果:

I\'m CodeFarmer

以上問題有兩種解決辦法:

  • 第一種:改用長字元串的寫法,不要使用原始字元串。
  • 第二種:單獨書寫反斜杠。

舉例如下所示:

# 列印 D:\Data\Tools\Python382\
str_demo = r'D:\Data\Tools\Python382''\\'  # 字元串拼接

print(str_demo)

運行結果:

D:\Data\Tools\Python382\

6 Python 字元串常用方法詳解

請參見博文 《Python 字元串常用方法詳解》

【文章其它地址】

微信公眾號:碼農阿傑

CSDN 博客

【參考資料】

Python 官網

Python 3.8.2 documentation


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

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...