文章目錄
- 一、回顧
- 二、新手容易踩坑的引號
- 三、轉義字符
- 四、多行字符串寫法
- 五、注釋
- 六、字符串索引和切片
- 七、字符串的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()"""