[Python從零到壹] 一.為什么我們要學Python及基礎語法詳解

一.初聊Python

為什么要學習Python?

在學習Python之前,你不要擔心自己沒基礎或“腦子笨”,我始終認為,只要你想學并為之努力,就能學好,就能用Python去做很多事情。在這個喧囂的時代,很多技術或概念會不斷興起,我希望你能沉下心來去學習,不要急于求成,一步一個腳印。當你把某個技術學好、學精后,還是能做一些事情的,甚至能找到喜歡的工作或完成實踐項目。

程序語言沒有最好,只有最適合。作為一名初學者,我非常推薦你學習Python,為啥?一方面是因為它具有語法清晰、代碼友好、易讀性高的特點,同時Python擁有強大的第三方庫函數(shù),包括網(wǎng)絡爬取、數(shù)據(jù)分析、可視化、人工智能等;另一方面Python既是一門解釋性編程語言,又是面向?qū)ο蟮恼Z言,其操作性和可移植性高,被廣泛應用于數(shù)據(jù)挖掘、信息采集、人工智能、網(wǎng)絡安全、自動化測試等領域。甚至,很多小學生、高中課程和計算機二級也都陸續(xù)增加了Python。

Python優(yōu)勢

Python最大的優(yōu)勢在于效率。有時候程序員或科研工作者的效率比機器的效率更重要,對于很多復雜性的功能,使用更加清晰的語言能給程序減少更多的負擔,從而大大增強程序的質(zhì)量,其易學性和擴展性也能讓新手很快上手。雖然Python底層運行速度要比C語言慢,但Python清晰的結(jié)構(gòu)能解放程序員的時間,同時很方便的和其他編程語言代碼(如C語言)融合在一起。

所以,從來沒有一種編程語言可以像Python這樣同時扎根在這么多領域,并且Python支持跨平臺操作,也支持開源,擁有強大的第三方庫。尤其隨著人工智能的持續(xù)火熱,Python在IEEE近幾年發(fā)布的最熱門語言中多次排名第一,越來越多的程序愛好者、科技關注者也都開始學習Python。

Python學習建議

在Python學習過程中,不要覺得你的底子薄或者之前沒接觸過,就想放棄,很多人還沒起跑就選擇退賽。我想,只要沉下心來,肯下功夫,就能學好。在學習過程中,一定要去寫代碼、寫代碼、寫代碼,只寫真正動手去實踐,才能慢慢積累。

同時,編寫代碼過程中出錯也是家常便飯,我現(xiàn)在寫Python代碼每天不出點錯,心里都躁得慌,所以遇到錯誤,學會百度、谷歌去解決真的非常重要,它也是你學習能力的一種提升,實在找不到錯誤,可以去開源論壇、社區(qū)、學習群里提問,也歡迎來公眾號或CSDN找我。

接下來我給出許老師推薦的Python程序員成長路線圖,包括:基礎語法–>語感訓練–>課題練習–>分方向繼續(xù)學習–>中級程序員–>拓展深度和廣度–>高級程序員。

這里,給出我學習Python的一些歷程和技巧。我最早接觸Python是2013年,主要是因為研究生方向是自然語言處理,需要通過Python抓取數(shù)據(jù)并進行分析,所以就選擇了它。那些年Python的資料很少,也沒這么火熱,但也一直堅持著,具體建議如下:

先把環(huán)境安裝,開始編寫第一個Python代碼,別再去等明天了

學習過程中切勿看視頻(書籍),喝著奶茶,就是一天,一定要動手敲代碼啊

通常先了解Python基礎語法,推薦MOOC北理工嵩天老師的視頻和runoob語法,當然B站和CSDN上也有很多免費資料,大家可以去選擇。

基礎語法大致掌握后可以嘗試學習Python網(wǎng)絡爬蟲,因為不論是數(shù)據(jù)分析、機器學習、滲透測試等,都會涉及到爬蟲技術,只有擁有自己的語料,才能處理更多問題。 爬蟲方面不用太深入,掌握兩門技術即可

Urllib、Requests、BeautifulSoup、XPath、Selenium、Scrapy、分布式爬蟲

接下來學習Python可視化分析(詞云)、微信操作、郵箱發(fā)送等功能,這些知識能有效提高你的編程興趣

人工智能方向:包括機器學習(回歸 | 聚類 | 分類)、深度學習(TensorFlow | Keras | Pytorch)學習,建議結(jié)合實際科研或項目進行深入研究

圖像識別方向:包括圖像處理、OpenCV、模式識別、機器學習、深度學習、目標檢測學習,也建議結(jié)合實際科研或項目進行深入研究

其他方向?qū)W習:Web網(wǎng)站開發(fā)、網(wǎng)絡安全、自動化測試、應用程序編寫

學習路上沒有捷徑,只有堅持,但你卻能通過Python不斷提升你的學習興趣,做一些喜歡的事,喜歡上這門語言。最后給出當年大三學習Python時激勵自己的話:

If not now, when? If not me, who?

如果不是為了自己奮斗,又是為誰;如果不是現(xiàn)在奮斗,什么時候開始呢?


二.Python簡介及安裝入門

1.Python簡介

Python是荷蘭人Guido van Rossum在1989年開發(fā)的一種腳本新解釋語言,它是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設計語言。Python是純粹的自由軟件,其語法簡潔清晰,特色之一是強制使用空白符(White Space)作為語句縮進。由于Python具有豐富和強大的庫,常被昵稱為膠水語言。

Python作為熱門語言,具有以下特點:

語法清晰,代碼友好,易讀性好

應用廣泛,具有大量的第三方庫支持,尤其是機器學習、人工智能相關庫

Python可移植性強,易于操作各種存儲數(shù)據(jù)的文本文件和數(shù)據(jù)庫

Python是一門面向?qū)ο笳Z言,支持開源思想

能在多種功能、多種平臺上撰寫腳本及快速開發(fā)

作者和許老師觀點一樣,不建議初學者上來就選擇像Anaconda或PyCharm等集成工具,在我看來它們提供的便利不如給用戶學習帶來的麻煩多。至少,在開始第一個星期不要使用IDE。對于Python這樣一種解釋型的腳本語言,一款趁手的編輯器就足夠。

我們需要的是專注于python本身,而不是被工具使用問題所困擾。君不見,知乎上關于Pycharm和Vscode的使用說明、常見問題的解決方案,多得幾乎超過了討論Python本身

很多學生由于學校電腦的限制,安裝Python官方提供的輕量型工具學習更方便

手工運行代碼,可以更直觀、更深刻地了解腳本的解釋執(zhí)行過程

手工調(diào)試代碼,有助于代碼優(yōu)化,提高代碼把控能力

可以更好地使用pip安裝和管理第三方模塊

當然,這些工具后續(xù)隨著學習深入,作者也會普及和分享其功能用法。

Anaconda Python

PyCharm

Cpython

ActivePython

PyPy

Jython

Spyder


2.安裝流程

如果您選擇Windows系統(tǒng)下編程,則您可以在Python官網(wǎng)Downloads頁面中下載編程軟件,其官網(wǎng)網(wǎng)址為“http://www.python.org”。同時,如果您是在Linux系統(tǒng)下編寫Python代碼,則您可以直接在Linux系統(tǒng)中內(nèi)置安裝使用Python解釋器。

從Python官網(wǎng)下載時,請注意選擇正確的版本。如果是用于學習,下載最新版沒有問題,如果是用于生產(chǎn),則要考慮你開發(fā)需要的第三方模塊是否支持最新版的Python。注意,Python2已經(jīng)不更新,建議大家學習Python3,兩者語法基本類似,僅部分功能修改。這里作者選擇下載Python3.6或Python3.7。

安裝時不要忘記勾選最下面的兩個復選框,否則會給后續(xù)的模塊安裝帶來一些麻煩,推薦使用默認方式安裝。

安裝成功后,需要在“開始”菜單中選中“程序”,找到安裝成功的Python軟件,如圖所示,打開解釋器編寫Python代碼。

打開“Python 3.6(64-bit)”命令行軟件,輸入第一行Python代碼“I love python”,輸出結(jié)果如下圖所示。解釋型語言的優(yōu)勢,就是可以寫一句執(zhí)行一句,想到哪兒寫到哪兒,不必像編譯型語言那樣得把程序全部寫完,編譯成功后才能運行。我特別喜歡使用python的IDLE,甚至拿它當計算器用。

但是如果你需要編寫大段代碼或自定義函數(shù)時,Python命令行肯定不是一個很好的選擇,此時讀者可以點擊“IDLE”,運行Python的集成開發(fā)環(huán)境(Python Integrated Development Environment,IDLE),你可以用它來創(chuàng)建或打開.py腳本文件,可以編輯、運行和調(diào)試,打開如下圖所示。

接著可以點擊“File”中“New File”新建文件,并另存為py文件,如“test01.py”,然后點擊運行“Run Module F5”按鈕,運行Python腳本文件。

所有Python文件將以.py為擴展名。將源代碼寫在test01.py文件中運行。

很多時候,我們用IDLE驗證代碼的寫法是否正確,查看模塊是否安裝成功以及版本號。IDLE支持tab鍵自動補齊,經(jīng)常用這個功能查看某個對象的方法和屬性。小技巧:

tab鍵自動補齊

光標移動到執(zhí)行過的語句上敲擊回車,可以重復這個命令

下劃線(_)可以獲取最后一次執(zhí)行結(jié)果


三.基礎語法

前面已經(jīng)成功安裝了Python軟件,接下來我們開始講解Python的基礎語法,包括縮進與注釋、變量與常量、輸入與輸出、賦值與表達式等。

1.縮進與注釋

縮進

不同于其他語言,在Python中通過縮進來標明代碼的層次關系。1個縮進等于4個空格,它是Python語言中標明程序框架的唯一手段。

在Python中,同一個語句塊中每條語句都是縮進的,并且縮進量相同,當回退或已經(jīng)閉合語句塊時,需要回退至上一層的縮進量,表示當前塊結(jié)束。下面是C語言和Python語法的對比,其中C語言用大括號來區(qū)分層次關系,Python通過縮進來區(qū)分。

縮進的空白數(shù)量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數(shù)量,這個必須嚴格執(zhí)行。

Python引號

Python 可以使用引號( ’ )、雙引號( " )、三引號( ‘’’ 或 “”" ) 來表示字符串,引號的開始與結(jié)束必須是相同類型的。其中三引號可以由多行組成,編寫多行文本的快捷語法,常用于文檔字符串,在文件的特定地點,被當做注釋。

word = 'eastmount'

sentence = "娜璋AI安全之家"

paragraph = """這是一個段落。

包含了多個語句"""

注釋

注釋是用于說明代碼信息的,注釋代碼是不執(zhí)行的。Python注釋主要包括兩種:

行注釋:采用#開頭進行單行注釋,如“#定義一個變量”。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

# 文件名:test01.py

# 第一個注釋

print ("Hello World!")? # 第二個注釋

塊注釋:多行說明的注釋采用’’'或"""開頭和結(jié)尾,比如使用Python集成開發(fā)環(huán)境Spyder新建文件時,通常有一段注釋說明。

"""

Created on Sat Sep 16 10:34:31 2017

@author: yxz

"""

多行語句

Python語句中一般以新行作為語句的結(jié)束符。但是我們可以使用斜杠( \)將一行的語句分為多行顯示,如下所示:

total = item_one + \

? ? ? ? item_two + \

? ? ? ? item_three

語句中包含 [], {} 或 () 括號就不需要使用多行連接符。如下實例:

days = ['Monday', 'Tuesday', 'Wednesday',

? ? ? ? 'Thursday', 'Friday']

2.變量與常量

變量

變量是程序中值可以發(fā)生改變的元素,是內(nèi)存中命名的存儲位置,變量代表或引用某值的名字,比如希望用N代表3,name代表“hello”等。其命名規(guī)則如下:

變量名是由大小寫字符、數(shù)字和下劃線(_)組合而成的。

變量名的第一個字符必須是字母或下劃線(_)。

Python中的變量是區(qū)分大小寫的,比如“TEST”和“test”是兩個變量。

在Python中對變量進行賦值時,使用單引號和雙引號是一樣的效果。

注意,Python中已經(jīng)被使用的一些關鍵詞不能用于聲明變量,關鍵詞表如下:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def',

'del', 'elif',? 'else', 'except', 'exec', 'finally', 'for', 'from',

'global', 'if', 'import', 'in',? 'is', 'lambda',? 'not', 'or',

'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

不同于C/C++/Java等語言,Python中的變量不需要聲明,就可以直接使用賦值運算符對其進行賦值操作,根據(jù)所賦的值來決定其數(shù)據(jù)類型,下圖為未聲明輸出其類型。

常量

常量是指程序中值不發(fā)生改變的元素,一旦初始化后就不能對其修改的固定值,它是內(nèi)存中用來保存固定值的單元。由于某種原因,Python并未提供如C/C++/Java一樣的const修飾符,換言之,python并沒有定義常量的關鍵字。但是Python可以使用對象的方法來創(chuàng)建常量,比如通過const.py文件,將const類注冊到sys.modules全局字典中

3.輸入與輸出

輸出

輸出使用print()函數(shù)實現(xiàn),包括輸出字符信息或變量,在Python2中,輸出包括兩種格式:print a或print(a),表示輸出變量a的值。但Python3不再支持空格輸出,如果您之前使用的是Python2,我們需要注意這些區(qū)別。

如果需要輸出多個變量,則使用采用逗號連接,如print(a,b,c)。簡單示例如下圖所示,print()函數(shù)可以輸出各種類型的變量。

print(a,b,c)

同時,Python支持格式化輸出數(shù)據(jù),需要調(diào)用format()函數(shù)實現(xiàn),其輸出格式為:print(format(val,format_modifier)),其中參數(shù)val表示值、format_modifier表示格式字,示例如下圖所示。

print(format(val,format_modifier))

其中“6.2f”表示輸出6位數(shù)值的浮點數(shù),小數(shù)點后精確到兩位,輸出值的最后一位采用四舍五入方式計算,最終輸出的結(jié)果為“12.35”?!?2%”表示輸出百分數(shù),保留兩位有效數(shù)字,其輸出結(jié)果為“34.56%”。如果想輸出整數(shù)直接使用“.0f”即可。

輸入

Python輸入主要包括input()和raw_input()兩個函數(shù)。

input()

input()函數(shù)從控制臺獲取用戶輸入的值,格式為:<變量>=input(<提示性文字>)。獲取的輸入結(jié)果為用戶輸入的字符串或值,并保存在變量中。輸入字符串和整數(shù)實例如下,其中type()函數(shù)用于查找變量的類型。

>>> str1 = input("input:")

input:"I am a teacher"

>>> print(str1)

I am a teacher

>>> age = input("input:")

input:25

>>> print(age,type(age))

25 <class 'str'>

>>>

raw_input()

raw_input()函數(shù)是另一個輸入操作,并返回string字符串。輸入以換行符結(jié)束,通過help(raw_input)可以查找?guī)椭R姼袷綖椋簊 = raw_input([prompt]),參數(shù)[prompt]可選,用于提示用戶輸入。示例代碼如下,第一段代碼輸入“hello world”,第二段代碼輸入“25”。

>>> str1 = raw_input("input:")

input:hello world

>>> print(str1)

hello world

>>> age = raw_input("input:")

input:25

>>> print(age,type(age))

25 <type 'str'>

>>>

注意,raw_input是2.x版本的輸入函數(shù),在新版本環(huán)境下會報錯,該函數(shù)未定義。在3.x版本中應該用input()代替raw_input()。

4.賦值與表達式

賦值

Python中的賦值語句是使用等號(=)給變量直接賦值,如“a=10”。如果需要同時給多個變量進行賦值,表達式如下:

<變量1>,<變量2>,…,<變量n> = <表達式1>,<表達式2>,…,<表達式n>

它先運算右側(cè)N個表達式,然后同時將表達式結(jié)果賦給左側(cè)變量。舉例如下:

>>> a,b,c = 10,20,(10+20)/2

>>> print(a,b,c)

10 20 15.0

>>>

表達式

表達式是程序中產(chǎn)生或計算新數(shù)據(jù)值的一行代碼,賦值表達式如a=10,通常由變量、常量或操作符號產(chǎn)生表達式。定義表達式注意一下幾點:

使用變量之前必須對其賦值,使用賦值表達式對其賦值。

表達式也需要遵循句首縮進規(guī)律,且不能改變其空格數(shù)量。

表達式中可以適量增加空格,使程序可讀性更高,但空格不能分割變量的命名方式,比如“a = b + c”,在運算符之間適當增加空格。

四.數(shù)據(jù)類型

講述完Python基礎知識后,讓作者帶領大家認識Python的常用數(shù)據(jù)類型。

1.數(shù)字類型

Python常見的數(shù)字類型包括整數(shù)類型、浮點數(shù)類型、復數(shù)類型。

整數(shù)類型:對應的數(shù)學中的整數(shù),其返回類型為int型,如10、25等;long為長整型,也可以代表八進制和十六進制。

浮點數(shù)類型:帶有小數(shù)點的數(shù)字,返回類型為float型,如3.14、2.1e2等。

復數(shù)類型:Python復數(shù)分為兩部分,形如a + bj,其中a為實部,b為虛部,返回類型為complex,例如-12.3 + 8j。復數(shù)可以通過.real獲取實部數(shù)據(jù),.imag獲取虛部數(shù)據(jù)。

>>> z = -12.3 + 8j

>>> print(z, type(z))

(-12.3+8j) <type 'complex'>

>>> print(z.real, z.imag)

-12.3 8.0

注意:Python中數(shù)字類型是可以相互轉(zhuǎn)換的,其中浮點數(shù)調(diào)用int()函數(shù)轉(zhuǎn)換為整數(shù),如int(3.14)返回結(jié)果3,整數(shù)調(diào)用float()轉(zhuǎn)換為小數(shù),浮點數(shù)調(diào)用complex()函數(shù)轉(zhuǎn)換為復數(shù)。

2.字符串類型

字符串類型在Python中是指需要用單引號或雙引號括起來的一個字符或字符串。該類型調(diào)用type(‘Python’)返回的結(jié)果是str類型。一般記為:

s=“a1a2···an”(n>=0)

字符串表示一個字符的序列,其最左端表示字符串的起始位置,下標為0,然后依次遞增。字符串對應的編號稱為“索引”,比如str1=‘Python’,則str1[0]獲取第一個字符,即“P”字母,并且字符串提供了一些操作和函數(shù)共用戶使用,比如len(str1)計算字符串長度,其返回結(jié)果為6。

counter = 100? ? ? ? #賦值整型變量

miles = 1000.0? ? ? ? #浮點型

name = "Eastmount"? ? #字符串

python的字串列表有兩種取值順序:

從左到右索引默認0開始的,最大范圍是字符串長度少1

從右到左索引默認-1開始的,最大范圍是字符串開頭


如果你要實現(xiàn)從字符串中獲取一段子字符串的話,可以使用 [頭下標:尾下標] 來截取相應的字符串,其中下標是從0開始算起,可以是正數(shù)或負數(shù),下標可以為空表示取到頭或尾。[頭下標:尾下標] 獲取的子字符串包含頭下標的字符,但不包含尾下標的字符。比如:

>>> s = 'abcdef'

>>> s[1:5]

'bcde'

3.列表類型

列表是Python中非常重要的一個數(shù)據(jù)類型,它是在中括號([ ])中用逗號分隔的元素集合,列表中的元素可以通過索引進行單個訪問,并且每個元素之間是有序的。例如:

>>> list1 = [1, 2, 3, 4, 5]

>>> print(list1)

[1, 2, 3, 4, 5]

>>> print(list1[0])

1

>>> print(type(list1))

<type 'list'>

>>> list2 = ['I', 'am', 'a', 'teacher']

>>> print(list2)

['I', 'am', 'a', 'teacher']

>>> print(list2[3])

teacher

>>>

列表可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。它支持字符、數(shù)字、字符串甚至可以包含列表(即嵌套)。列表用 [ ] 標識,是Python最通用的復合數(shù)據(jù)類型。

列表中值的切割也可以用到變量 [頭下標:尾下標] ,就可以截取相應的列表,從左到右索引默認0開始,從右到左索引默認-1開始,下標可以為空表示取到頭或尾。(下圖參考runoob網(wǎng)站,推薦大家去學習)

列表中的每個元素可以定義不同的數(shù)據(jù)類型,如list1 = [1, 1.3, ‘teacher’]。其操作方法和字符串類似,如列表采用加號(+)拼接、采用乘號(*)重復顯示、也可以切片獲取列表中的子元素,示例如下:

>>> list1 = [1, 2, 3, 4, 5]

>>> list2 = [6, 7, 8]

>>> print(list1+list2)

[1, 2, 3, 4, 5, 6, 7, 8]

>>> print(list2*3)

[6, 7, 8, 6, 7, 8, 6, 7, 8]

>>> print(list1[2:4])

[3, 4]

>>>

列表中的常見方法如下表所示,假設存在列表list1 = [4, 2, 1, 5, 3]。


4.元組類型

元組是和列表類似的一種數(shù)據(jù)類型,它采用小括號定義一個或多個元素的集合,其返回類型為tuple。示例如下:

>>> t1 = (12, 34, 'Python')

>>> print(t1)

(12, 34, 'Python')

>>> print(type(t1))

<type 'tuple'>

>>> print(t1[2])

Python

>>>

注意:可以定義空的元組,如t2=(),元組可以通過索引訪問,比如上述代碼t1[2]訪問第3個元素,即“Python”。當元組定義后就不能進行更改,也不能刪除,這不同于列表,由于元組的不可變特性,它的代碼更加安全。

以下是元組無效的,因為元組是不允許更新的,而列表是允許更新的。錯誤提示:TypeError: ‘tuple’ object does not support item assignment,在編程構(gòu)成中出錯或BUG是非常正常的,莫慌,解決掉它。

# -*- coding: UTF-8 -*-

tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )

list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]

tuple[2] = 1000? ? # 元組中是非法應用

list[2] = 1000? ? # 列表中是合法應用

5.字典類型

字典(dictionary)是除列表以外python之中最靈活的內(nèi)置數(shù)據(jù)結(jié)構(gòu)類型。列表是有序的對象集合,字典是無序的對象集合。兩者之間的區(qū)別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。

字典是針對非序列集合而提供的,字典用"{ }"標識,由鍵值對(< Key > < Value >)組成,字典是鍵值對的集合,其類型為dict。鍵是字典的索引,一個鍵對應著一個值,通過鍵值可查找字典中的信息,這個過程叫做映射。

示例如下,通過鍵值對可以獲取“4”對應的“Guiyang”。

>>> dic = {"1":"Beijing","2":"Shanghai","3":"Chengdu","4":"Guiyang"}

>>> print(dic)

{'1': 'Beijing', '3': 'Chengdu', '2': 'Shanghai', '4': 'Guiyang'}

>>> print(dic["4"])

Guiyang

字典與列表主要存在幾個區(qū)別:

列表中的元素是順序排列的,字典中的數(shù)據(jù)是無序排列的。

它們的映射方式不同,列表通過地址映射到值,字典通過鍵值對映射到值。

列表只能通過數(shù)字下標或索引訪問,字典可以用各種對象類型作為鍵訪問。

字典鍵值對靈活應用非常重要,尤其是網(wǎng)絡爬蟲Json格式解析,后面我們實際案例中會用到。下面給出一段簡單代碼,重點是keys()和values()用法。

dict = {}

dict['one'] = "This is one"

dict[2] = "This is two"

tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}

print(dict['one']) #輸出鍵為one的值

print(dict[2])? ? #輸出鍵為2的值

print(tinydict)? ? #輸出完整字典

print(tinydict.keys())? #輸出所有鍵

print(tinydict.values()) #輸出所有值

輸出結(jié)果如下圖所示:

五.字符串操作

個人覺得字符串操作也是Python非常好用的地方,不論是數(shù)據(jù)爬取、大數(shù)據(jù)分析或文本挖掘中,所以作者單獨將該部分拿出來進行講解。

字符串是指有序的字符序列集合,用單引號、雙引號、三重(單雙均可)引號引起來,其中使用三重引號括起來的字符串變量可以用來定義換行的字符串。比如:

str1 = 'hello world'

str2 = "hello world"

str3 = """hello world"""

字符串支持格式化輸出,需要引入操作符百分號(%)實現(xiàn),在百分號的左側(cè)放置一個格式化字符串,右側(cè)放置期望的格式化值,也可是元組和字典。例如:

>>> print("Hi!My Name is %s,I am %d years old and %f pounds heavy."%("YXZ", 26, 55.5))

Hi!My Name is YXZ,I am 26 years old and 55.500000 pounds heavy.

>>>

依次輸出字符串(%s)、整數(shù)(%d)、浮點數(shù)(%s)三個值。同時字符串支持各種各樣的操作,尤其是處理文本內(nèi)容時,需要使用這些方法及函數(shù),下面講解常用函數(shù)。

基礎操作

字符串的基本操作包括求長度、拼接、重復操作、索引、切片等等。假設str1字符串為“hello”,str2字符串為“world”,則len(str1)計算字符串str1長度為5;str1+str2拼接后的結(jié)果為“helloworld”;str1*3字符串重復結(jié)果為“hellohellohello”。

字符串切片定義為s[i:j:step],其中step表示切片的方向,默認起點從0開始,終點不寫切到最后。例如:

str1 = 'abcdefghijklmn'

print(str1[3:6])

# def

輸出結(jié)果為“def”,從第3個值開始獲取,第6個值為終點且不獲取,即str1[0]=‘a(chǎn)’,str1[3]=‘d’,str1[4]=‘e’,str1[5]=‘f’。同樣,如果增加step參數(shù)且為負數(shù),表示從反向切片。正方向第一個a索引下標值為0,最后一個n索引下標值為-1,結(jié)果為“nmlk”。

str1 = 'abcdefghijklmn'

print(str1[-1:-5:-1])

# nmlk

find()函數(shù)

用法:從字符串中查找子字符串,返回值為子串所在位置的最左端索引。如果沒有找到則返回-1,擴展的rfind()方法表示從右往左方向查找,常用于正則表達式爬取數(shù)據(jù)。

示例:獲取字符串“def”的位置,位于第3個位置(從0開始計數(shù))。

str1 = 'abcdefghijklmn'

num = str1.find('def')

print num

# 3

split()函數(shù)

用法:字符串分割函數(shù),將字符串分割成序列,返回分割后的字符串序列。如果不提供分割符,程序?qū)阉锌崭褡鳛榉指舴?/p>

示例:默認按照空格分割字符串,也可以設置如“+”分割字符串,該方法在字符串分割、IP提取、URL后綴提取常用。

strip()函數(shù)

用法:該函數(shù)用于去除開頭和結(jié)尾的空格字符(不包含字符串內(nèi)部的空格),同時S.strip([chars])可去除指定字符。擴展的函數(shù)lstrip()去除字符串開始(最左邊)的所有空格,rstrip()去除字符串尾部(最右邊)的所有空格。

示例:去除字符串前后兩端的空格。

>>> str1 = "? ? I am a teacher? ? "

>>> print(str1.strip())

I am a teacher

>>>

join()函數(shù)

用法:通過某個字符拼接序列中的字符串元素,隊列中元素必須是字符串,返回一個拼接好的字符串函數(shù),可以認為join()函數(shù)是split()函數(shù)的逆方法。

示例:采用空格(’ ')拼接字符串[‘I’,‘a(chǎn)m’,‘a(chǎn)’,‘teacher’],代碼及輸出結(jié)果如下。

>>> num = ['I','am','a','teacher']

>>> sep = ' '

>>> str1 = sep.join(num)

>>> print str1

I am a teacher

>>>

————————————————

版權(quán)聲明:本文為CSDN博主「Eastmount」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/Eastmount/article/details/108172132

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容