「Python編程基礎」第7章:字符串操作

在這里插入圖片描述

文章目錄

  • 一、回顧
  • 二、新手容易踩坑的引號
  • 三、轉義字符
  • 四、多行字符串寫法
  • 五、注釋
  • 六、字符串索引和切片
  • 七、字符串的in 和 not in
  • 八、字符串拼接
  • 九、轉換大小寫
  • 十、合并字符串join()
  • 十一、分割字符串split()
  • 十二、字符串替換 replace()
  • 十三、字符串內容判斷方法
  • 十四、字符串內容統計方法
  • 十五、字符串是否包含某個子串
  • 練習題-領導找我,我不在工位該怎么辦?

一、回顧

我們在第2章節《小試牛刀》已經了解過關于字符串的一些簡單操作,比如如果用+號拼接字符串,字符串作為日常程序最常見的數據形式,當然不僅僅這一點點操作和知識,Python為我們提供了更為豐富的操作。

如果你是一個經常需要處理繁瑣文本格式的辦公人員,本章節內容能夠讓你將這些工作自動化處理。

  • 比如提取字符串中部分內容。

  • 添加和刪除不需要的字符,比如空白字符。

  • 轉換字母大小寫。

  • 檢查字符串格式。

二、新手容易踩坑的引號

第2章節,我們學過以下寫法。

print('This is a book.')

如果簡寫下這句英語,你會發現一個錯誤信息。

print('This's a book.')
"""代碼運行結果:File "E:\code\learning_python_basis\Lesson_code_7\新手容易踩坑的引號.py", line 2print('This's a book.')^
SyntaxError: unterminated string literal (detected at line 2)
"""

原因就是由于Python認為在第1個引號之后,這個字符串就結束了,所以之后的內容不符合規范,會報錯,那該怎么寫呢?

print("This's a book.")

這樣寫,就不會報錯,所以之前老師傅在寫字符串的時候,都習慣使用 雙引號

三、轉義字符

什么叫做轉義字符?

你可以這樣理解,就是需要轉換這個字符的含義所使用到的字符“\”,如果你還不明白,看接下來的這個代碼。

print('This\'s a book.')

我們發現,在剛才逗號之前,加上轉義字符“\”,就不會報錯,因為轉義字符將原本表示字符串的單引號,轉移成普通的文本字符。

常用的轉義字符,我列舉一些,當然還有其他的轉義字符內容,大家需要什么可以百度。

轉義字符描述
\’單引號
\‘’雙引號
\t制表符
\n換行符
\\倒斜杠
# 換行符 \n
print("第1行:測試劃水老師傅。\n第2行:天天在摸魚!")
# 制表符 \t (tab)
print("第1行:測試劃水老師傅。\t第2行:天天在摸魚!")
# \\ "\"字符
print("第1行:測試劃水老師傅。\\第2行:天天在摸魚!")
# \'字符 單引號
print("第1行:測試劃水老師傅。\'第2行:天天在摸魚!")
#\t:制表符,一個tab鍵(4個空格)的距離
print("A\tB\tC\tD\tE\tF\tG")
print("Hello",end="\t")#結束符
print("World")

四、多行字符串寫法

之前我們的字符串都是一行一行的,那如果是一篇文章該怎么辦?

比如,我們要復制一段網頁文章。

print("人民網里約熱內盧12月4日電 (記者時元皓)圣保羅州立大學孔子學院日前舉辦以“讓光影編織文化紐帶”為主題的第八屆圣保羅中國電影展深度對話系列活動,包括影片主創訪談、巴西媒體專訪和線上圓桌論壇,旨在讓巴西民眾更深入了解影展播放的影片,進一步了解中國文化。系列活動共吸引近5000人關注。影片主創訪談中,參展影片的主創人員既從宏觀層面分析了中國電影在“走出去”的過程中,如何平衡“中國本土文化”和“國際需求”、滿足跨文化交流的需要;又從微觀層面,分析了影片的創作思路和呈現的文化內涵。此次主創訪談視頻被投放于圣保羅州文化廳線上播放平臺,超1000人觀看。孔子學院巴方院長路易斯·保利諾在巴西最大的新聞門戶網站之一“Brasil 247”上,接受了巴西記者專訪。采訪中,保利諾表示,電影節的影片讓巴西民眾從更全面的角度了解中國,同時帶給巴西民眾更多對于中國文化與現代生活的思考。線上圓桌論壇環節邀請了本屆影展開幕式影片《臍帶》導演喬思雪,本屆影展策展人之一石文學和巴西電影導演、翻譯家米蓮娜·巴爾巴參加。論壇介紹了《臍帶》的創作背景、創作思路、文化意境及其傳播效果和影響,還探討了青年導演在中巴兩國的發展現狀和前景,近500人在線參與討論互動。")

這段話,我在編譯器中,還得刪除換行等操作,不然會報錯,如果超過1萬字,我不敢想象,我得刪除多少換行符。

所以我們此時建議使用 “”" “”" 包裹這段話。

print("""人民網里約熱內盧12月4日電 (記者時元皓)圣保羅州立大學孔子學院日前舉辦以“讓光影編織文化紐帶”為主題的第八屆圣保羅中國電影展深度對話系列活動,包括影片主創訪談、巴西媒體專訪和線上圓桌論壇,旨在讓巴西民眾更深入了解影展播放的影片,進一步了解中國文化。系列活動共吸引近5000人關注。影片主創訪談中,參展影片的主創人員既從宏觀層面分析了中國電影在“走出去”的過程中,如何平衡“中國本土文化”和“國際需求”、滿足跨文化交流的需要;又從微觀層面,分析了影片的創作思路和呈現的文化內涵。此次主創訪談視頻被投放于圣保羅州文化廳線上播放平臺,超1000人觀看。孔子學院巴方院長路易斯·保利諾在巴西最大的新聞門戶網站之一“Brasil 247”上,接受了巴西記者專訪。采訪中,保利諾表示,電影節的影片讓巴西民眾從更全面的角度了解中國,同時帶給巴西民眾更多對于中國文化與現代生活的思考。線上圓桌論壇環節邀請了本屆影展開幕式影片《臍帶》導演喬思雪,本屆影展策展人之一石文學和巴西電影導演、翻譯家米蓮娜·巴爾巴參加。論壇介紹了《臍帶》的創作背景、創作思路、文化意境及其傳播效果和影響,還探討了青年導演在中巴兩國的發展現狀和前景,近500人在線參與討論互動。""")

各位讀者可以直觀上對比下,以及在打印輸出下,看下結果,你會發現,第二種竟然會原模原樣的輸出文章內容。

五、注釋

我們在第2章節《小試牛刀》已經了解過單行注釋的符號。

# 單行注釋

但實際過程中,我們還需要多行注釋。

"""
多行注釋
多行注釋
多行注釋
"""

估計你已經發現,這個寫法竟然和字符串的多行寫法一樣…

六、字符串索引和切片

字符串的切片其實和列表一樣,如果你列表學的還行,那么這一個知識點可謂是手到擒來。

比如我們可以將“Hello World!”看成一個列表,字符串中的每一個字符,對應一個項(索引)。

H e l l o W o r l d !
0 1 2 3 4 5 6 7 8 9 10

我們此時,需要獲取“e”字符該怎么操作?還記得列表的取值操作嗎?

str = "Hello World!"
print(str[1])

我們再試試切片取值。

str = "Hello World!"
print(str[1:5])

更多的切片操作,不在贅述,可以看看我們前面學習的列表。

七、字符串的in 和 not in

是不是很熟悉?你會發現,當你前面學的還不錯的時候,后面一些編程語法是相同的。

str = "Hello World!"
print('a' in str)
print('?' not in str)

八、字符串拼接

我們之前學習過使用+號來完成這一操作,但是你不覺得很麻煩?很不好看嗎?

如果要拼接很多字符,豈不是n個+號,想想都頭疼。

比如下面這個代碼,我寫的時候真的好煩,而且中英文切換老煩了。

name = "測試劃水老師傅"
age = "30"
sex = "男"
hobby = "躺平"print("你好,我是" + name + "," + "我今年" + age + "歲" + "。" + "\n" + "性別:" + sex +"。" + "\n" + "我的愛好是:" + hobby + "。")

以后我不想再這樣寫了!這樣寫真的是讓我很暴躁。

我們來試試新的寫法。

name = "測試劃水老師傅"
age = "30"
sex = "男"
hobby = "躺平"print("你好,我是" + name + "," + "我今年" + age + "歲" + "。" + "\n" + "性別:" + sex + "。" + "\n" + "我的愛好是:" + hobby + "。")

第1種簡化寫法。

print("你好,我是%s,我今年%s歲。\n""性別:%s。\n""我的愛好是:%s!" % (name, age, sex, hobby))

第2種簡化寫法。(推薦)

print(f'你好,我是{name},我今年{age}歲。\n'f'性別:{sex}。\n'f'我的愛好是:{hobby}!')

九、轉換大小寫

str_abc = 'abc'
str_ABC = "ABC"# capitalize() 首字母大寫
print(f"str_abc:數據{str_abc},首字母大寫{str_abc.capitalize()}")# lower() 將字符串全部轉換為小寫
print(f"數據{str_ABC},結果是:{str_ABC.lower()}")# swapcase() 將字符串中大寫轉換為小寫,小寫轉換為大寫
print(f"數據{str_ABC},結果是:{str_ABC.swapcase()}")# title() 將單詞首字母大寫
print(f"數據{str_abc},結果是:{str_abc.title()}")# upper() 將字符串全部轉換為大寫
print(f"數據{str_abc},結果是:{str_abc.upper()}")

十、合并字符串join()

join(),合并列表里面的字符串為一個新的字符串。

"""
語法:
字符或子串.join(多字符串組成的序列)
"""
my_list = ['aa','bb','cc']
new_str = '...'.join(my_list)
print(new_str)"""
aa...bb...cc
"""

十一、分割字符串split()

split(),按照指定字符分割字符串。

"""
語法:
字符串序列.split(分割字符,num),num表示的是分割字符出現的次數,即將來返回數據的個數為num+1個
"""str = "Java, Java, is cool."
str_list = str.split(",",1) #不添加第二個參數,會將所有","作為分割符合進行分割
print(str)
print(str_list)
print(type(str_list))"""
Java, Java, is cool.
['Java', ' Java, is cool.']
<class 'list'>
"""

十二、字符串替換 replace()

"""
語法:
字符串序列.replace(舊子串,新子串,替換次數)
說明replace并為對原有數據進行修改,修改后的數據是replace函數的返回值
字符串數據類型是不可變數據類型
"""str = "Java Java is cool."
new_str = str.replace("Java","Python",1)
print(str)
print(new_str)"""
Java Java is cool.
Python Java is cool.
"""

十三、字符串內容判斷方法

str_abc = 'abc'# isalnum() 檢測字符串是否僅包含0-9 A-Z a-z
print(f"str_abc:數據{str_abc},是否僅包含0-9 A-Z a-z?{str_abc.isalnum()}")# isalpha() 檢測字符串是否僅包含A-Z a-z
print(f"str_abc:數據{str_abc},是否僅包含A-Z a-z?{str_abc.isalpha()}")# isdigit() 檢測字符串是否僅包含數字
print(f"str_abc:數據{str_abc},是否僅包含數字?{str_abc.isdigit()}")# islower() 檢測字符串是否均為小寫
print(f"str_abc:數據{str_abc},是否均為小寫?{str_abc.islower()}")# isspace() 檢測字符串是否出現空白字符
print(f"str_abc:數據{str_abc},是否出現空白字符?{str_abc.isspace()}")# istitle() 檢測字符串是否首字母大寫
print(f"str_abc:數據{str_abc},是否首字母大寫?{str_abc.istitle()}")# isupper() 檢測字符串是否均為大寫
print(f"str_abc:數據{str_abc},是否均為大寫?{str_abc.isupper()}")

十四、字符串內容統計方法

count() 統計某個子串在該字符串中出現幾次。

"""
語法:
字符串序列.count(子串)
"""
str = "My name is Python."
print(str.count("n"))

十五、字符串是否包含某個子串

index() 檢查某個子串是否包含在這個字符串,如果包含返回該下標,否則程序報錯。

"""
語法:
字符串序列.index(舊子串,新子串,替換次數)
"""
str = "My name is Python."
print(str.index("name"))

find() 檢查某個子串是否包含在這個字符串,如果包含返回該下標,否則返回-1。

"""
語法:
字符串序列.find(子串,開始位置下標,結束位置下標)#不輸入下標默認整個字符串
"""
str = "My name is Python."
print(str.find("name"))

練習題-領導找我,我不在工位該怎么辦?

"""
需求:
假如每次領導找我們,我們都要回復領導這些消息,但是又不想每次打一大堆文字,想提升效率的同時,摸摸魚,該怎么辦?:
1. 好的,領導!
2. 領導,這件事有些復雜! 我一會找您溝通下。
3. 領導,我這會很忙! 大概30分鐘后,我做完手上的活來找您。
(暫時不考慮根據領導的話來識別回復,目前已學習內容還無法做到,我們僅考慮隨機回復這3種話術即可。)知識補充:
1. 需要安裝第三方模塊pyperclip來實現復制粘貼操作。
2. 創建功能函數,使用程序調試main方法執行。例子:
def print_text():print("123")if __name__ == '__main__':print_text()"""

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

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

相關文章

讀文章摘錄

20%的時間可以做點業余項目。有個叫克萊舍基的人&#xff0c;寫了一本書&#xff0c;書名叫《認知盈余-網絡時代的創造與繁榮》&#xff0c;他有個觀點&#xff0c;閑暇時間給人機會創造有價值的東西。 很重要的一點是選合適的人&#xff0c;把他們引入團隊。何謂合適的人&…

uniapp 開發app項目步驟

Uniapp 是一個基于 Vue.js 的跨平臺開發框架&#xff0c;可以將同一個項目同時編譯到多個平臺&#xff0c;包括 H5、iOS、Android 等。以下是開發 Uniapp 項目的步驟&#xff1a; 安裝 Uniapp 可以通過 npm 安裝 Uniapp&#xff0c;具體操作如下&#xff1a; npm install -g…

Qt使用Cryptopp生成HMAC-MD5

近期項目中HTTPS通訊中&#xff0c;token需要使用HMAC-MD5算法生成&#xff0c;往上找了一些資料后&#xff0c;仍不能滿足自身需求&#xff0c;故次一記。 前期準備&#xff1a; ①下載Cryptopp庫&#xff08;我下載的是8.8.0 Release版本&#xff09;&#xff1a;Crypto Li…

Linux: glibc: net/if.h vs linux/if.h

最近看到一段代碼改動,用net/if.h替換了linux/if.h。仔細看了看這兩個的區別: https://stackoverflow.com/questions/20082433/what-is-the-difference-between-linux-if-h-and-net-if-h 從網上搜了一下看到如下的一個編譯錯誤,如果同時使用這兩個if.h文件,需要將net/if.h…

注意力機制添加方法

要將注意力機制模塊添加到YoloV5工程項目中的yolo.py中&#xff0c;可參考以下四種情況。 以下4個elif代碼來自https://yolov5.blog.csdn.net/article/details/129108082 elif m in [SimAM, ECA, SpatialGroupEnhance,TripletAttention]:args [*args[:]]elif m in [CoordAtt…

【1day】致遠系統A6版本operaFileActionController.jsp接口任意文件讀取漏洞學習

注:該文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與作者無關。 目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現

基于ResNet模型的908種超大規模中草藥圖像識別系統

中草藥藥材圖像識別相關的實踐在前文中已有對應的實踐了&#xff0c;感興趣的話可以自行移步閱讀即可&#xff1a; 《python基于輕量級GhostNet模型開發構建23種常見中草藥圖像識別系統》 《基于輕量級MnasNet模型開發構建40種常見中草藥圖像識別系統》 在上一篇文章中&…

RocketMQ-RocketMQ高性能核心原理(流程圖)

1.NamesrvStartup 2.BrokerStartup 3. DefualtMQProducer 4.DefaultMQPushConsumer

maven工程的pom.xml文件中增加了依賴,但偶爾沒有下載到本地倉庫

maven工程pom.xml文件中的個別依賴沒有下載到本地maven倉庫。以前沒有遇到這種情況&#xff0c;今天就遇到了這個問題&#xff0c;把解決過程記錄下來。 我在eclipse中編輯maven工程的pom.xml文件&#xff0c;增加對mybatis的依賴&#xff0c;但保存文件后&#xff0c;依賴的j…

Java--1v1雙向通信-控制臺版

文章目錄 前言客戶端服務器端輸出線程端End 前言 TCP&#xff08;Transmission Control Protocol&#xff09;是一種面向連接的、可靠的網絡傳輸協議&#xff0c;它提供了端到端的數據傳輸和可靠性保證。 本程序就是基于tcp協議編寫而成的。 利用 TCP 協議進行通信的兩個應用…

HarmonyOS(鴻蒙操作系統)與Android系統 各自特點 架構對比 各自優勢

綜合對比 HarmonyOS&#xff08;鴻蒙操作系統&#xff09;是由華為開發的操作系統&#xff0c;旨在跨多種設備和平臺使用。HarmonyOS的架構與谷歌開發的廣泛使用的Android操作系統有顯著不同。以下是兩者之間的一些主要比較點&#xff1a; 設計理念和使用案例&#xff1a; Harm…

go語言 grpc 攔截器

文章目錄 攔截器服務端攔截器一元攔截器流攔截器 客戶端攔截器一元攔截器流攔截 多個攔截器 代碼倉庫 攔截器 gRPC攔截器&#xff08;interceptor&#xff09;是一種函數&#xff0c;它可以在gRPC調用之前和之后執行一些邏輯&#xff0c;例如認證、授權、日志記錄、監控和統計…

iOS app切換后臺時添加模糊遮罩層

仿 支付寶 退出后臺后,App整個 增加模糊遮罩層 此處只介紹 在iOS13后 SceneDelegate 下的操作 原理就是 在 App 進入后臺后 在 主window上添加一個 UIVisualEffectView 在進入前臺后移除 直接上代碼: 先聲明: //先聲明 /* blurView */ property (strong, nonatomic) UI…

逆波蘭表達式求解計算器

利用逆波蘭表達式求解計算器有以下幾個步驟: 1. 去掉字符串中的空格 s s.replaceAll(" ", "")2. 講字符串轉換為中序表達式數組 def string_to_infixlist(s):ans []keep_num ""for i in range(len(s)):if s[i].isdigit():if i < len(s)…

docker學習(四、修改容器創建新的鏡像推送到云上)

鏡像是只讀的&#xff0c;容器是可編輯的。Docker鏡像是分層的&#xff0c;支持通過擴展鏡像&#xff0c;創建新的鏡像。 學到這里感覺docker跟git很想~~ 通過docker commit將修改的容器做成新的鏡像 # 將容器做成新的鏡像 docker commit -m"提交備注" -a"作…

【1day】泛微e-office OA系統sms_page.php接口SQL 注入漏洞學習

注:該文章來自作者日常學習筆記,請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與作者無關。 目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現

大創項目推薦 交通目標檢測-行人車輛檢測流量計數 - 大創項目推薦

文章目錄 0 前言1\. 目標檢測概況1.1 什么是目標檢測&#xff1f;1.2 發展階段 2\. 行人檢測2.1 行人檢測簡介2.2 行人檢測技術難點2.3 行人檢測實現效果2.4 關鍵代碼-訓練過程 最后 0 前言 &#x1f525; 優質競賽項目系列&#xff0c;今天要分享的是 &#x1f6a9; 畢業設計…

什么是Nginx反向代理?Nginx反向代理配置指南

Nginx反向代理是一種常見的服務器架構模式&#xff0c;它可以將客戶端請求轉發到多個后端服務器上&#xff0c;從而實現負載均衡、高可用性和安全性。本文將介紹Nginx反向代理的基本概念和配置方法。 什么是Nginx反向代理&#xff1f; 在傳統的Web服務器架構中&#xff0c;客戶…

解決selenium使用.get()報錯:unknown error: unsupported protocol

解決方法 將原來的&#xff1a; url "https://www.baidu.com" browser.get(url)替換為&#xff1a; url "https://www.baidu.com" browser.execute_script(f"window.location.replace({url});") # 直接平替 .get()問題解析 之前運行都是正…

【后端學前端學習記錄】學習計劃

1、個人背景 寫了足夠久的后端了&#xff0c;常用的語言基本上都接觸過&#xff0c;沒有在工作中寫過前端 一直想做一些前端的工作&#xff0c;但是前端技能不足加上自己審美不行&#xff0c;寫出的界面總是很丑 所以一直對前端做不好&#xff0c;也沒有真正下手。 2、動機 種…