跟老齊學(xué)Python之玩轉(zhuǎn)字符串(1)
如果對(duì)自然語(yǔ)言分類,有很多中分法,比如英語(yǔ)、法語(yǔ)、漢語(yǔ)等,這種分法是最常見(jiàn)的。在語(yǔ)言學(xué)里面,也有對(duì)語(yǔ)言的分類方法,比如什么什么語(yǔ)系之類的。我這里提出一種分法,這種分法尚未得到廣大人民群眾和研究者的廣泛認(rèn)同,但是,我相信那句“真理是掌握在少數(shù)人的手里”,至少在這里可以用來(lái)給自己壯壯膽。
我的分法:一種是語(yǔ)言中的兩個(gè)元素(比如兩個(gè)字)和在一起,出來(lái)一個(gè)新的元素(比如新的字);另外一種是兩個(gè)元素和在一起,知識(shí)兩個(gè)元素并列。比如“好”和“人”,兩個(gè)元素和在一起是“好人”,而3和5和在一起是8,如果你認(rèn)為是35,那就屬于第二類和法了。
把我的這種分法抽象一下:
一種是:△ +□ = ○
另外一種是:△ +□ = △ □
我們的語(yǔ)言中,離不開(kāi)以上兩類,不是第一類就是第二類。
太天才了。請(qǐng)鼓掌。
字符串
在我洋洋自得的時(shí)候,我google了一下,才發(fā)現(xiàn),自己沒(méi)那么高明,看維基百科的字符串詞條是這么說(shuō)的:
字符串(String),是由零個(gè)或多個(gè)字符組成的有限串行。一般記為s=a[1]a[2]...a[n]。
看到維基百科的偉大了吧,它已經(jīng)把我所設(shè)想的一種情況取了一個(gè)形象的名稱,叫做字符串
根據(jù)這個(gè)定義,在前面兩次讓一個(gè)程序員感到偉大的"Hello,World",就是一個(gè)字符串。或者說(shuō)不管用英文還是中文還是別的某種問(wèn),寫出來(lái)的文字都可以做為字符串對(duì)待,當(dāng)然,里面的特殊符號(hào),也是可以做為字符串的,比如空格等。
操練一下字符串吧。
>>> print "good good study, day day up" good good study, day day up >>> print "----good---study---day----up" ----good---study---day----up
在print后面,打印的都是字符串。注意,是雙引號(hào)里面的,引號(hào)不是字符串的組成部分。它是在告訴計(jì)算機(jī),它里面包裹著的是一個(gè)字符串。也就是在python中,通常用一對(duì)雙引號(hào)、或者單引號(hào)來(lái)包裹一個(gè)字符串?;蛘哒f(shuō),要定義一個(gè)字符串,就用雙引號(hào)或者單引號(hào)。
愛(ài)思考的看官肯定發(fā)現(xiàn)上面這句話有問(wèn)題了。如果我要把下面這句話看做一個(gè)字符串,應(yīng)該怎么做?
小明說(shuō)"我沒(méi)有燒圓明園"
或者這句
What's your name?
問(wèn)題非常好,有道理。在python中有一種方法專門解決類似的問(wèn)題??聪旅娴睦樱?/p>
>>> print "小明說(shuō):\"我沒(méi)有燒圓明園\"" 小明說(shuō)"我沒(méi)有燒圓明園"
這個(gè)例子中,為了打印出那句含有雙引號(hào)的字符串,也就是雙引號(hào)是字符串的一部分了,使用了一個(gè)符號(hào):\,在python中,將這個(gè)符號(hào)叫做轉(zhuǎn)義符。本來(lái)雙引號(hào)表示包括字符串,它不是字符串一部分,但是如果前面有轉(zhuǎn)義符,那么它就失去了原來(lái)的含義,轉(zhuǎn)化為字符串的一部分,相當(dāng)于一個(gè)特殊字符了。
下面用轉(zhuǎn)義符在打印第二句話:
>>> print 'what\'s your name?' what's your name?
另外,雙引號(hào)和單引號(hào)還可以嵌套,比如下面的句子中,單引號(hào)在雙引號(hào)里面,雖然沒(méi)有在單引號(hào)前面加轉(zhuǎn)義符,但是它被認(rèn)為是字符串一部分,而不是包裹字符串的符號(hào)
>>> print "what's your name?" #雙引號(hào)包裹單引號(hào),單引號(hào)是字符 what's your name? >>> print 'what "is your" name' #單引號(hào)包裹雙引號(hào),雙引號(hào)是字符 what "is your" name
變量連接到字符串
前面講過(guò)變量了,并且有一個(gè)釣魚的比喻。如果忘記了,請(qǐng)看前一章內(nèi)容。
其實(shí),變量不僅可以跟數(shù)字連接,還能夠跟字符串連接。
>>> a=5 >>> a 5 >>> print a 5 >>> b="hello,world" >>> b 'hello,world' >>> print b hello,world
還記得我們?cè)?jīng)用過(guò)一個(gè)type命令嗎?現(xiàn)在它還有用,就是檢驗(yàn)一個(gè)變量,到底跟什么類型聯(lián)系著,是字符串還是數(shù)字?
>>> type(a) <type 'int'> >>> type(b) <type 'str'>
程序員們經(jīng)常用一種簡(jiǎn)單的說(shuō)法,把a(bǔ)稱之為數(shù)字型變量,意思就是它能夠或者已經(jīng)跟數(shù)字連著呢;把b叫做字符(串)型變量,意思就是它能夠或者已經(jīng)跟字符串連著呢。
對(duì)字符串的簡(jiǎn)單操作
對(duì)數(shù)字,有一些簡(jiǎn)單操作,比如四則運(yùn)算就是,如果3+5,就計(jì)算出為8。那么對(duì)字符串都能進(jìn)行什么樣的操作呢?試試吧:
>>> "py"+"thon" 'python'
跟我那個(gè)不為大多數(shù)人認(rèn)可的發(fā)現(xiàn)是一樣的,你還不認(rèn)可嗎??jī)蓚€(gè)字符串相加,就相當(dāng)于把兩個(gè)字符串連接起來(lái)。(別的運(yùn)算就別嘗試了,沒(méi)什么意義,肯定報(bào)錯(cuò),不信就試試)
>>> "py"-"thon" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'str' and 'str'
以上就是對(duì)字符串的第一種操作。
連接字符串
方法1:
在IDLE中按照下面方法操作
>>> a = "老齊" >>> b= "教python" >>> c = a+b >>> print c 老齊教python >>> c '\xe8\x80\x81\xe9\xbd\x90\xe6\x95\x99python'
這是一種最簡(jiǎn)單連接兩個(gè)字符串的方法。注意上面例子的最后一行,怎么出現(xiàn)亂碼了?那不是亂碼,是字符編碼的問(wèn)題。這個(gè)你權(quán)當(dāng)沒(méi)看見(jiàn)好了。不過(guò)的確是看見(jiàn)了。請(qǐng)看官google字符編碼就知道了。這里推薦一篇非常好的文章:字符集和字符編碼
老齊提示:看官做為學(xué)習(xí)者,一定要對(duì)所學(xué)的對(duì)象有一種好奇心,比如上面例子中,如果你滿足于print c,發(fā)現(xiàn)結(jié)果跟自己所預(yù)料一樣,這還遠(yuǎn)遠(yuǎn)不夠。如果你向下走了一行,就發(fā)現(xiàn)一個(gè)怪怪的結(jié)果了,這就讓你在編程路上又前進(jìn)一大步。所以,要有對(duì)世界好奇的心,不斷探索、思考和嘗試。反正在計(jì)算機(jī)上嘗試,也沒(méi)有多大成本。最壞的結(jié)果是關(guān)掉IDLE罷了。
對(duì)字符串的簡(jiǎn)單操作暫且到這里,下一篇文章繼續(xù),還沒(méi)完,請(qǐng)明天再來(lái)。
相關(guān)文章
關(guān)于Python OS模塊常用文件/目錄函數(shù)詳解
os模塊是操作系統(tǒng)接口模塊,提供了一些方便使用操作系統(tǒng)相關(guān)功能函數(shù),這里介紹下os模塊中對(duì)于文件/目錄常用函數(shù)和使用方法。感興趣的朋友跟隨小編一起看看吧2021-06-06
wxpython實(shí)現(xiàn)圖書管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了wxpython實(shí)現(xiàn)圖書管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
Python機(jī)器學(xué)習(xí)工具scikit-learn的使用筆記
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)工具scikit-learn的使用筆記,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01
Python基礎(chǔ)數(shù)據(jù)類型tuple元組的概念與用法
元組(tuple)是 Python 中另一個(gè)重要的序列結(jié)構(gòu),和列表類似,元組也是由一系列按特定順序排序的元素組成,這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)數(shù)據(jù)類型tuple元組的概念與使用方法,需要的朋友可以參考下2021-07-07
基于python3 的百度圖片下載器的實(shí)現(xiàn)代碼
這篇文章主要介紹了基于python3 的百度圖片下載器的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
python中的reduce內(nèi)建函數(shù)使用方法指南
python中的reduce內(nèi)建函數(shù)是一個(gè)二元操作函數(shù),他用來(lái)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給reduce中的函數(shù) func()(必須是一個(gè)二元操作函數(shù))先對(duì)集合中的第1,2個(gè)數(shù)據(jù)進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用func()函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果2014-08-08
Python使用Beautiful Soup爬取豆瓣音樂(lè)排行榜過(guò)程解析
這篇文章主要介紹了Python使用Beautiful Soup爬取網(wǎng)頁(yè)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python實(shí)現(xiàn)聚類K-means算法詳解
這篇文章主要介紹了Python實(shí)現(xiàn)聚類K-means算法詳解,K-means(K均值)算法是最簡(jiǎn)單的一種聚類算法,它期望最小化平方誤差,具體詳解需要的朋友可以參考一下2022-07-07

