跟老齊學(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è)字符串?;蛘哒f(shuō)不管用英文還是中文還是別的某種問(wèn),寫(xiě)出來(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中有一種方法專門(mén)解決類似的問(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è)釣魚(yú)的比喻。如果忘記了,請(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)文章
python格式的Caffe圖片數(shù)據(jù)均值計(jì)算學(xué)習(xí)
這篇文章主要為大家介紹了python格式的Caffe圖片數(shù)據(jù)均值計(jì)算學(xué)習(xí)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python利用pandas和matplotlib實(shí)現(xiàn)繪制柱狀折線圖
這篇文章主要為大家詳細(xì)介紹了如何使用?Python?中的?Pandas?和?Matplotlib?庫(kù)創(chuàng)建一個(gè)柱狀圖與折線圖結(jié)合的數(shù)據(jù)可視化圖表,感興趣的可以了解一下2023-11-11利用Python實(shí)現(xiàn)批量打包程序的工具
auto-py-to-exe與pyinstaller都無(wú)法直接一次性打包多個(gè)程序,想打包多個(gè)程序需要重新操作一遍。所以本文將用Python實(shí)現(xiàn)批量打包程序的工具,感興趣的可以了解一下2022-07-07python中shapefile庫(kù)讀取shapefile文件信息
本文主要介紹了python中shapefile庫(kù)讀取shapefile文件信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-065個(gè)Python自動(dòng)化運(yùn)維腳本分享
Python 是一種流行的編程語(yǔ)言,具有豐富的第三方庫(kù)和強(qiáng)大的自動(dòng)化能力,適用于許多不同的領(lǐng)域,許多運(yùn)維工程師會(huì)使用 Python 腳本來(lái)自動(dòng)化運(yùn)維任務(wù),所以本文為大家整理了5個(gè)Python自動(dòng)化運(yùn)維腳本,有需要的可以參考下2023-08-08Python中json.dumps()和json.dump()的區(qū)別小結(jié)
在Python中,json.dumps()和json.dump()是兩個(gè)常用的函數(shù),本文主要介紹了Python中json.dumps()和json.dump()的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02