Python入門-基本數據類型-字符串類型及其操作

字符串類型存儲的數據是字符串,字符串是一個由字符構成的序列。Python字符串是不可變的
不支持動態修改。本節將對字符串進行簡單介紹,包括字符串的定義方式、格式化、索引、切片
拼接、重復和成員歸屬等。

1.字符串的定義方式

1.1單行字符串

單行字符串可以由一對單引號( ' )或雙引號( " ) 作為邊界來表示,單引號和雙引號作用相同。
例如
"hello"
'hello'

雙引號定義的字符串可以含有單引號,但是不能直接含有雙引號。同理,單引號定義的字符串
也不能直接含有單引號。這是因為Python解釋器會匹配先出現的一對引號,導致后面的內容無法處
理。錯誤做法示例如下。

'let's go'

此時代碼塊會出現錯誤高亮提示,運行時程序發生異常,異常類型為SyntaxError,表示語法錯
誤,異常信息如下。

  File "/root/Python_03/main.py", line 1'let's go'^
SyntaxError: invalid syntax

要解決這個問題,可以對字符串中的單引號、雙引號等特殊字符進行轉義處理,即在特殊字符
前面加上轉義字符"\"。此時解釋器不再將特殊字符視為字符串的語法標志,而是將其與轉義字符視
為一個整體。具體示例如下。

'let\'s go'

常用轉義字符表

轉義字符說明轉義字符說明
\(在行尾時)續行符\t橫向制表符
\\反斜杠符\b退格
\'單引號\r回車
\"雙引號\f換頁
\n回車換行\a響鈴

如果需要忽略字符串中的轉義字符,則可以在字符串的前面添加r或者R。例如,要打印某個文
件的路徑“C:\Windows\tracing”,其中“t”構成了一個轉義字符,導致字符串輸出格式不符合預期,
此時在字符串前加r或R即可忽略轉義字符的原有作用。

在字符串前使用r或R。

print('C:\Windowstracing')      #轉義字符起作用
print(r'C:\Windows\tracing')    #在字符串前加r

運行結果如下。

C:\Windows racing
C:\Windows\tracing

編程建議:字符串的定義可以選擇單引號或雙引號,建議在編程中統一使用其中一種。一般情況下,雙引號在面對縮寫和所有格時更加友好,例如,“Lets”或“Im”,無須變換引號形式或使用轉義字符。如果字符串包含引號,應當優先使用另一種形式的引號來包含字符串,而非使用轉義字符。

1.2多行字符串

多行字符串由一對三引號包含,可以是三單引號也可以是三雙引號。三引號中包含的所有字符
都屬于字符串內容,包括空格、換行等。三引號中可以包含單引號、雙引號,無須轉義,所有字
均以原始形態打印出來,所見即所得。

打印圣誕樹。

print("""
"這是一個圣誕樹"*********
************""")

運行結果如下

"這是一個圣誕樹"*********
************

2.字符串格式化

字符串格式化是指預先制定一個帶有空位的模板,然后根據需要對空位進行填充。例如,預先制定一個模板“一年的_學期我學習了_門課程”,然后在下面線的位置填充內容,可以用以下代碼實現。

print("{}年的{}學期我學習了{}門課程".format(2022,"上",20))

輸出結果如下。

2022年上學期我學習了20門課程

2.1 format()方法的基本用法

字符串 format() 方法的基本使用格式是:
模板字符串.format(參數列表)
模板字符串中有一系列用“{}”表示的空位,format0方法可以將以逗號間隔的參數列表按照對
應關系替換到這些空位上。如果“(}”中沒有序號,則按照出現的順序進行替換.
如果“{}”中指定了參數序號,則會按照序號對參數進行替換,參數從0開始編號.

?2.2 format()方法的格式處理

format()方法的模板字符串的空位中不僅可以填寫參數序號,還可以有其他的格式處理形式,此
時空位的樣式如下。

(參數序號:格式處理內容}

格式處理內容要按照以下順序使用。
(1)填充:填充單個字符,不指定時用空格填充。
(2)對齊:“<”為左對齊,“>”為右對齊,“^”為居中對齊。
(3)符號:“+”表示在正數前加正號,負數前加負號;“-”表示正數不變,負數加負號;空格表示正數加空格,負數加負號。
(4)寬度:指定空位所占寬度。
(5)分隔符:用逗號“,”分隔數字的千位,適用于整數和浮點數。
(6)精度:用“.precision”指定浮點數的精度或字符串輸出的最大長度,如“.5”
(7)類型:用于指定類型,如表所示。

類型說明
a對字符串類型格式化
b將整數輸出為對應的二進制數
c將整數輸出為對應的Unicodc字符
d將整數輸出為對應的十進制數
o將整數輸出為對應的八進制數
x或X將整數輸出為對應的小寫或大寫的十六進制數
e或E將浮點數輸出為e或E的指數形式
f將浮點數標準輸出
%輸出浮點數的百分比形式

格式化輸出學生信息。

name ="張三"
studentId="202201"
#用-占位,寬度為10,姓名和學號居中
print("我叫{0:-^10},學號為(1:-^10}".format(name,studentId))

運行結果如下。

我叫----張三----,學號為--202201--

3.f字符串

Python 3.6提供了一種新的格式化字符串的方法——f-strings,即f字符串。f字符串的格式化處理與format()方法類似,但語法比其簡潔。Python 3.6及以后的版本推薦使用f字符串進行字符串的格式化。f字符串用花括號“{}”表示被替換的字段。

f字符串的使用。

name ="張三"
studentId="202201"
print(f"我叫(name),學號為(studentId}")

運行結果如下。

我叫張三,學號為202201

4.字符串的索引與切片

字符串是一個不可變的字符序列,每個字符都有其編號,也稱為索引。Python的索引從0開始遞增,字符串的第1個字符的索引為0,第2個字符的索引為1,以此類推;索引也可以是負數,字符串的最后1個字符的索引為-1,倒數第2個字符的索引為-2,如圖所示。、

studyhard
0123456789
-10-9-8-7-6-5-4-3-2-1

根據索引可以獲取字符串中的字符,例如,獲取“study hard”中的字符“h”,可以通過以下代碼實現。

word = "study hard"
word [6]
word [-4]

Python提供了len()函數計算字符串的長度,語法格式如下。

len(string)

其中string為要進行長度計算的字符串。

計算字符串“study hard”的長度。

length = len("study hard")
print(length)

運行結果如下。

10

len()函數在計算字符串長度時,不區分字母、漢字、數字、標點和特殊字符等,例如,字符串“學習Python使我快樂!#¥”,用len0)函數計算其長度,“學”“p”“!”“#”等各占一位,字符串長度為15。

字符串切片是指從字符串中截取部分字符組成新的字符串,且不會使原字符串產生變化,其語
法格式如下。

sname[start :end :step]

參數說明

參數說明
sname字符串名稱
start切片開始的位置(包括此位置),不指定時默認為0
end切片結束的位置(不包括此位置),不指定時默認為序列的長度
step切片的步長,不傳值時默認為1,最后的冒號也可以省略

字符串的切片。

sname ="學習Python使我快樂"               #共12個字符
print("sname[:]:",sname[:])              #取到字符串所有字符
print("sname[3:8]:",sname[3:8])          #默認步長為1
print("sname[:8]:"sname[:8])             #默認從索引0開始,步長為1
print("sname[3:]: ",sname[3:])           #默認到字符串末尾,步長為1
print("sname[3:8:2]:",sname[3:8:2])      #設置步長為2
print("snamel:-4]:"sname[:-4])           #索引0到-4,不含-4
print("sname[-8:-3:2]:",sname[-8:-3:2])  #索引-8到-3,不含-3,步長為2
print("sname[8:3:-2]:"sname[8:3:-2])     #索引8到3,不含3,步長為-2

運行結果如下。

sname[:]:學習Python使我快樂
sname[3:8l:ython
sname[:8]:學習Python
sname[3:]:ython使我快樂
sname[3:8:2]:yhn
sname[:-4]:學習Python
sname[-8:-3:2]:to使
sname[8:3:-2]:使ot

5.字符串的拼接與重復

5.1.字符串拼接

使用“+”可以實現字符串拼接,將多個字符串連接起來并產生一個字符串對象。

name ="張三”
action ="吃了早飯"
print(name + action)

運行結果如下。

張三吃了早飯

這種機制只能用于字符串類型之間的拼接,否則就會發生異常。

例如.字符串類型與整型的拼接。

str1 ="我今天吃了"
num = 3
str2="碗飯"
print(strl +num + str2)

此時程序異常,異常類型為TypeError,表示類型錯誤,異常信息如下,

Traceback (most recent call last):File "c:\1000phone\test.py",line 4,in <module>print(strl +num + str2)
TypeError: can only concatenate str(not "int") to str

可以用str()函數和repr()函數解決此類問題。str(0函數和repr()函數是將對象轉換為字符串類型的
種機制:str()函數會將對象轉換為合理形式的字符串,以便用戶理解;而repr()函數會創建一個字
串,用合法的Python表達式來表示對象,以供Python解釋器讀取。

str()函數及repr()函數的使用。

action ="Hi,1000phone"
print("str()函數處理后:"+str(action))
print("repr()函數處理后:"+repr(action))
strl="我今天吃了"
num =3
str2="碗飯"
print("用str()函數實現字符串拼接:"+str1+str(num)+ str2)

運行結果如下。

str()函數處理后:Hi,1000phone
repr()函數處理后:'Hi,1000phone'
用str()函數實現字符串拼接:我今天吃了3碗飯

針對字符串,Python語言提供了幾個基本操作符

操作符描述
x + y
連接兩個字符串 x y
x * n n * x
復制 n 次字符串 x
x in s
如果 x s 的子串,返回 True ,否則返回 False

5.2.重復字符串

使用“*”可以將字符串重復多次。

print("study"* 5)

運行結果如下。

studystudystudystudystudy

6.字符串的成員歸屬

字符串的成員歸屬需要用到成員運算符,成員運算符能夠判斷指定序列是否包含某個值。Python
的成員運算符包括in和not in,詳細說明如下。

(1)in:如果在指定序列中找到值,返回True,否則返回False。
(2)not in:如果在指定序列中沒有找到值,返回True,否則返回False.

査找字符串是否含有某字符。

sentence ="i want to eat meat"
print("e在sentence中:","e" in sentence)
print("e不在sentence中:","e" not in sentence)

運行結果如下。

e在sentence中:True
e不在sentence中: False

實例解析:愷撒密碼

愷撒撒密碼是古羅馬愷撒大帝用來對軍事情報進行加密 的算法,它采用了替換方法對信息中的每一個英文字符 循環替換為字母表序列該字符后面第三個字符:
原文: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

?

原文字符 P ,其密文字符 C 滿足如下條件:
????????????????C = ( P + 3 ) mod 26
解密方法反之,滿足:
????????????????P = ( C – 3 ) mod 26

1.愷撒密碼-加密

愷撒密碼的加密算法程序首先接收用戶輸入的文本,然 后對字母a-z 和字母 A-Z 按照密碼算法進行轉換。
ptxt = input("請輸入明文文本: ")
for p in ptxt:if "a" <= p <= "z":print(chr(ord("a")+(ord(p)-ord("a")+3)%26), end='')
elif "A" <= p <= "Z":print(chr(ord("A")+(ord(p)-ord("A")+3)%26), end='')
else:print(p, end='')

運行結果如下。

請輸入明文文本: This is an excellent Python book.
Wklv lv dq hafhoohqw Sbwkrq errn.

2.愷撒密碼-加密

愷撒密碼的解密算法程序首先接收用戶輸入的加密文本, 然后對字母a-z 和字母 A-Z 按照密碼算法進行反向轉換.
etxt = input("請輸入加密后文本: ")
for p in etxt:if "a" <= p <= "z":print(chr(ord("a")+(ord(p)-ord("a")-3)%26), end='')
elif "A" <= p <= "Z":print(chr(ord("A")+(ord(p)-ord("A")-3)%26), end='')
else:print(p, end='')

運行結果如下。

請輸入加密后文本: Wklv lv dq hafhoohqw Sbwkrq errn.
This is an excellent Python book.

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

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

相關文章

《概率論與數理統計》期末筆記_下

目錄 第4章 隨機變量的數字特征 4.1 數學期望 4.2 方差 4.3 常見分布的期望與方差 4.4 協方差與相關系教 第5章 大數定律和中心極限定理 5.1 大數定律 5.2 中心極限定理 第6章 樣本與抽樣分布 6.1 數理統汁的基本概念 6.2 抽樣分布 6.2.1 卡方分布 6.2.2 t分布 6.…

高效利用iCloud的指南

高效利用iCloud的指南可以幫助你充分利用Apple提供的云服務&#xff0c;以下是一些關鍵的步驟和建議&#xff1a; 了解iCloud的基本功能 iCloud是Apple提供的云服務&#xff0c;可以安全地存儲你的個人信息&#xff0c;包括照片、文件、備忘錄、日歷、聯系人等。通過iCloud&…

JavaScript(4)——數組,常量

let和var的區別 var可以先使用再聲明var聲明過的變量可以重復聲明 數組 聲明語法&#xff1a; let 數組名 [數據1&#xff0c;數據2&#xff0c;數據3,...] 數組是按順序保存&#xff0c;所以每個數據都有自己的編號計算機中的編號從0開始編號也叫索引或下標 數組可以存儲任…

java基于ssm+jsp 高校畢業生就業滿意度調查統計系統

1用戶前臺功能模塊 高校畢業生就業滿意度調查統計系統&#xff0c;在高校畢業生就業滿意度調查統計系統可以查看首頁、問卷、就業咨詢、試卷列表、新聞資訊、留言反饋、我的、跳轉到后臺等內容&#xff0c;如圖1所示。 圖1系統首頁界面圖 用戶登錄、用戶注冊&#xff0c;通過…

LabVIEW代碼性能優化

優化LabVIEW代碼以提高軟件性能是確保系統高效運行的關鍵。通過分析代碼結構、數據管理、并行處理、內存使用和硬件資源的有效利用&#xff0c;我們可以從多個角度提升LabVIEW程序的執行速度和穩定性。 代碼結構優化 模塊化編程 將復雜的程序分解成多個子VI&#xff0c;每個子V…

Linux-進程間通信(IPC)

進程間通信&#xff08;IPC&#xff09;介紹 進程間通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同的進程之間傳播或交換信息。IPC 的方式包括管道&#xff08;無名管道和命名管道&#xff09;、消息隊列、信號量、共享內存、Socket、Stre…

糾正自己的做題習慣-認真學習理科第三天

自己的做題習慣有問題&#xff0c;自己得不斷地糾正自己的做題習慣&#xff0c;自己經常題目都不看&#xff0c;就開始寫題&#xff0c;結果就是自己沒有辦法能夠良好地進行做題。 any()函數用于判斷數組中是否存在滿足條件的元素&#xff0c;而all&#xff08;&#xff09;函數…

LabVIEW編程控制ABB機械臂

使用LabVIEW編程控制ABB機械臂是一項復雜但十分有價值的任務。通過LabVIEW&#xff0c;可以實現對機械臂的精確控制和監控&#xff0c;提升自動化水平和操作效率。 1. 項目規劃和硬件選型 1.1 確定系統需求 運動控制&#xff1a;確定機械臂需要執行的任務&#xff0c;如抓取、…

typescript定義函數的傳參、返回值

Render 函數中定義函數傳參 interface List {id: number;name: string; }interface Result {data: List[]; //表示由 List 接口組成的數組 }function Render(result: Result) {result.data.forEach(value > {console.log(value);}); }let result {data: [{id: 1,name: 張三…

嵌入式Linux系統編程 — 5.2 Linux系統時間與日期

目錄 1 了解Linux系統時間 1.1 幾種常用的時間 1.2 如何查看幾種常用的時間 1.3 Linux 系統中的時間 2 time、gettimeofday獲取時間 2.1 time函數 2.2 ???????gettimeofday函數&#xff1a; 2.3 示例程序 3 時間轉換函數 3.1 ctime與ctime_r函數 3.2 localti…

Unity之自定義Text組件默認屬性值

內容將會持續更新&#xff0c;有錯誤的地方歡迎指正&#xff0c;謝謝! Unity之自定義Text組件默認屬性值 TechX 堅持將創新的科技帶給世界&#xff01; 擁有更好的學習體驗 —— 不斷努力&#xff0c;不斷進步&#xff0c;不斷探索 TechX —— 心探索、心進取&#xff01;…

普通集群與鏡像集群配置

一. 環境準備 關閉防火墻和selinux&#xff0c;進行時間同步 rabbitmq-1 Rocky_linux9.4 192.168.226.22rabbitmq-2Rocky_linux9.4192.168.226.23rabbitmq-3Rocky_linux9.4192.168.226.24 修改主機名#192.168.226.22 hostnamectl set-hostname rabbitmq-1#192.168.226.22 ho…

isalpha()方法——判斷字符串是否只由字母組成

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 語法參考 isalpha()方法用于判斷字符串是否只由字母組成。isalpha()方法的格式如下&#xff1a; str.isalpha() 如果字符串中至少有一個字符并且所…

「C++系列」C++ 基本語法

文章目錄 一、C 基本語法1. **預處理指令**2. **數據類型**3. **變量和常量**4. **運算符**5. **控制流語句**6. **函數**7. **數組**8. **指針和引用**9. **結構體和類**10. **輸入/輸出**11. **異常處理**12. **命名空間** 二、C 程序結構1. 程序流程結構2. 文件結構3. 編譯預…

銀河麒麟高級服務器操作系統V10SP2(X86)配置bond0的mac地址為指定子網卡的mac地址

銀河麒麟高級服務器操作系統V10SP2&#xff08;X86&#xff09;配置bond0的mac地址為指定子網卡的mac地址 一 系統環境二 刪除和備份原有配置2.1 down掉bond02.2 備份之前的bond配置到/root/bak2.3 刪除bond配置&#xff08;網卡文件根據實際情況變化&#xff09; 三 新建bond0…

昇思25天學習打卡營第6天|MindSpore-ResNet50遷移學習

MindSpore-ResNet50遷移學習 遷移學習 圖像的遷移學習是一種機器學習方法,它將已經在一個或多個源任務上訓練好的預訓練模型應用到新的目標任務上。這種方法的核心思想是,通過在大量數據上訓練模型,學習到的特征表示可以用于其他相關任務,從而提高目標任務的性能。 應用場…

MySQL之聚簇索引和非聚簇索引

1、什么是聚簇索引和非聚簇索引&#xff1f; 聚簇索引&#xff0c;通常也叫聚集索引。 非聚簇索引&#xff0c;指的是二級索引。 下面看一下它們的含義&#xff1a; 1.1、聚集索引選取規則 如果存在主鍵&#xff0c;主鍵索引就是聚集索引。如果不存在主鍵&#xff0c;將使…

【Lua】第二篇:打印函數和注釋

文章目錄 一. 打印函數二. 注釋方式1. 單行注釋2. 多行注釋 一. 打印函數 Lua 程序是以 .lua 結尾的文件&#xff0c;創建一個的 Test.lua 的文件&#xff0c;使用 print 函數輸出字符串"Hello World"&#xff1a; print(Hello World) 保存之后使用命令lua 文件名編…

MyBatis(14)MyBatis 如何實現多對一和一對多的映射關系

MyBatis 中實現多對一和一對多的映射主要依賴于映射文件中的 <association> 和 <collection> 標簽。這兩種映射關系的實現&#xff0c;是通過嵌套查詢或嵌套結果映射來完成的。在源碼層面&#xff0c;MyBatis 使用相應的處理器來處理這些標簽&#xff0c;最終實現復…

elasticsearch-6.8.23的集群搭建過程

三個節點的 ElasticSearch 集群搭建步驟 準備三臺機器&#xff1a;28.104.87.98、28.104.87.100、28.104.87.101 和 ElasticSearch 的安裝包 elasticsearch-6.8.23.tar.gz ----------------------------- 28.104.87.98&#xff0c;使用 root 用戶操作 ----------------------…