国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

復(fù)習(xí)Python中的字符串知識(shí)點(diǎn)

2019-11-25 17:45:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

字符串

在 Python 中創(chuàng)建字符串對(duì)象非常容易。只要將所需的文本放入一對(duì)引號(hào)中,就完成了一個(gè)新字符串的創(chuàng)建(參見(jiàn)清單 1)。如果稍加思考的話,您可能會(huì)感到有些困惑。畢竟,有兩類(lèi)可以使用的引號(hào):?jiǎn)我?hào) (') 和雙引號(hào) (")。幸運(yùn)的是,Python 再一次使這種問(wèn)題迎刃而解。您可以使用任意一類(lèi)引號(hào)來(lái)表示 Python 中的字符串,只要引號(hào)一致就行。如果字符串是以單引號(hào)開(kāi)始,那么必須以單引號(hào)結(jié)束,反之亦然。如果不遵循這一規(guī)則,則會(huì)出現(xiàn) SyntaxError 異常。
清單 1. 在 Python 中創(chuàng)建字符串

>>> sr="Discover Python">>> type(sr)<type 'str'>>>> sr='Discover Python'>>> type(sr)<type 'str'>>>> sr="Discover Python: It's Wonderful!"    >>> sr='Discover Python" File "<stdin>", line 1  sr='Discover Python"            ^SyntaxError: EOL while scanning single-quoted string>>> sr="Discover Python: /... It's Wonderful!">>> print srDiscover Python: It's Wonderful!

從清單 1 中可以看出,除了字符串用適當(dāng)?shù)囊?hào)括起來(lái)之外,另外還有兩個(gè)重要方面。第一,在創(chuàng)建字符串時(shí),您可以混合使用單引號(hào)和雙引號(hào),只要字符串在開(kāi)始位置和結(jié)束位置使用同一類(lèi)型的引號(hào)。這種靈活性允許 Python 容易地保留常規(guī)的文本數(shù)據(jù),這些常規(guī)的文本數(shù)據(jù)可能需要使用單引號(hào)來(lái)表示簡(jiǎn)寫(xiě)的動(dòng)詞形式或所屬關(guān)系,以及使用雙引號(hào)來(lái)表示引述文本。

第二,如果字符串用一行表示太長(zhǎng),您可以使用 Python 連續(xù)字符:反斜線 (/) 來(lái)對(duì)字符串進(jìn)行折行。從內(nèi)部機(jī)制看,在創(chuàng)建字符串時(shí)換行符會(huì)被忽略,在打印字符串時(shí)可以看出這一點(diǎn)。您可以結(jié)合使用這兩個(gè)功能,來(lái)創(chuàng)建包含較長(zhǎng)段落的字符串,如清單 2 所示。
清單 2. 創(chuàng)建長(zhǎng)字符串

>>> passage = 'When using the Python programming language, one must proceed /... with caution. This is because Python is so easy to use and can be so /... much fun. Failure to follow this warning may lead to shouts of /... "WooHoo" or "Yowza".'>>> print passageWhen using the Python programming language, one must proceed with caution. This is because Python is so easy to use, and can be so much fun. Failure to follow this warning may lead to shouts of "WooHoo" or "Yowza".

編者注:上面的示例已折行處理,這樣使頁(yè)面布局更合理。事實(shí)上,它本來(lái)顯示為一個(gè)較長(zhǎng)的行。

注意,當(dāng)打印 passage 字符串時(shí),所有格式將被刪除,只保留一個(gè)非常 長(zhǎng)的字符串。通常,您可以使用控制符來(lái)表示字符串中的簡(jiǎn)單格式。例如,要表示一個(gè)新行開(kāi)始,您可以使用換行控制符 (/n);要表示插入一個(gè)制表符(預(yù)設(shè)空格數(shù)),可以使用制表符控制符 (/t),如清單 3 所示。
清單 3. 在字符串中使用控制符

>>> passage='/tWhen using the Python programming language, one must proceed/n/... /twith caution. This is because Python is so easy to use, and/n/... /tcan be so much fun. Failure to follow this warning may lead/n/... /tto shouts of "WooHoo" or "Yowza".'>>> print passage    When using the Python programming language, one must proceed    with caution. This is because Python is so easy to use, and    can be so much fun. Failure to follow this warning may lead    to shouts of "WooHoo" or "Yowza".>>> passage=r'/tWhen using the Python programming language, one must proceed/n/... /twith caution. This is because Python is so easy to use, and/n/... /tcan be so much fun. Failure to follow this warning may lead/n/... /tto shouts of "WooHoo" or "Yowza".'>>> print passage/tWhen using the Python programming language, one must proceed/n//twith caution. This is because Python is so easy to use, and/n//tcan be so much fun. Failure to follow this warning may lead/n//tto shouts of "WooHoo" or "Yowza".

清單 3 中的第一段按照您預(yù)期的方式使用了控制符。該段已具備良好的格式,閱讀非常方便。第二個(gè)示例雖然也進(jìn)行了格式化處理,但它引用的是所謂的原始字符串,即沒(méi)有應(yīng)用控制符的字符串。您始終可以認(rèn)出原始字符串,因?yàn)樵撟址钠鹗家?hào)的前面有一個(gè) r 字符,它是 raw 的縮寫(xiě)。

我不了解您講的有什么可取之處,雖然這種方法可行,但創(chuàng)建一個(gè)段落字符串似乎非常因難。當(dāng)然一定有更好的方法。與往常一樣,Python 提供了一種非常簡(jiǎn)單的方法用于創(chuàng)建長(zhǎng)字符串,該方法可保留創(chuàng)建字符串時(shí)所使用的格式。這種方法是使用三個(gè)雙引號(hào)(或三個(gè)單引號(hào))來(lái)開(kāi)始和結(jié)束長(zhǎng)字符串。在該字符串中,您可以使用任意多的單引號(hào)和雙引號(hào)(參見(jiàn)清單 4)。
清單 4. 使用三個(gè)引號(hào)的字符串

>>> passage = """...     When using the Python programming language, one must proceed...     with caution. This is because Python is so easy to use, and...     can be so much fun. Failure to follow this warning may lead...     to shouts of "WooHoo" or "Yowza".... """>>> print passage            When using the Python programming language, one must proceed    with caution. This is because Python is so easy to use, and    can be so much fun. Failure to follow this warning may lead    to shouts of "WooHoo" or "Yowza".

將字符串作為一個(gè)對(duì)象

如果閱讀了本系列前兩篇文章中的任何一篇文章,那么在您的腦海中會(huì)立即浮現(xiàn)出這樣一句話:在 Python 中,所有事物都是對(duì)象。到目前為止,我還沒(méi)有涉及到關(guān)于 Python 中的字符串的對(duì)象特性的問(wèn)題,但是,與往常一樣,Python 中的字符串就是對(duì)象。事實(shí)上,字符串對(duì)象是 str 類(lèi)的一個(gè)實(shí)例。正如您在 探索 Python,第 2 部分 中看到的,Python 解釋器包括一個(gè)內(nèi)置幫助工具(如清單 5 所示),它可以提供關(guān)于 str 類(lèi)的信息。
清單 5. 獲取關(guān)于字符串的幫助信息

>>> help(str)     Help on class str in module __builtin__:          class str(basestring)| str(object) -> string| | Return a nice string representation of the object.| If the argument is a string, the return value is the same object.| | Method resolution order:|   str|   basestring|   object| | Methods defined here:| | __add__(...)|   x.__add__(y) <==> x+y| ...

使用單引號(hào)、雙引號(hào)和三引號(hào)語(yǔ)法創(chuàng)建的字符串仍然是字符串對(duì)象。但是您也可以使用 str 類(lèi)構(gòu)造函數(shù)顯式地創(chuàng)建字符串對(duì)象,如清單 6 所示。該構(gòu)造函數(shù)可以接受簡(jiǎn)單的內(nèi)置數(shù)值類(lèi)型或字符數(shù)據(jù)作為參數(shù)。兩種方法都可以將輸入的內(nèi)容更改為新的字符串對(duì)象。
清單 6. 創(chuàng)建字符串

>>> str("Discover python")'Discover python'>>> str(12345)'12345'>>> str(123.45)'123.45'>>> "Wow," + " that " + "was awesome."'Wow, that was awesome.'>>> "Wow,"" that ""was Awesome"'Wow, that was Awesome'>>> "Wow! "*5'Wow! Wow! Wow! Wow! Wow! '>>> sr = str("Hello ")>>> id(sr)5560608>>> sr += "World">>> sr'Hello World'>>> id(sr)3708752

清單 6 中的例子也展示了關(guān)于 Python 字符串的幾個(gè)其他重要方面。第一,通過(guò)將其他字符串添加在一起,可以創(chuàng)建新的字符串,具體方法可以使用 + 運(yùn)算符,或者干脆使用適當(dāng)?shù)囊?hào)將字符串連在一起。第二,如果需要重復(fù)短字符串來(lái)創(chuàng)建長(zhǎng)字符串,可以使用 * 運(yùn)算符,將字符串重復(fù)一定的次數(shù)。我在本文開(kāi)頭說(shuō)過(guò),在 Python 中,字符串是不變的字符序列, 上例中的最后幾行說(shuō)明了這一點(diǎn),我首先創(chuàng)建一個(gè)字符串,然后通過(guò)添加其他字符串對(duì)它進(jìn)行修改。從對(duì) id 方法兩次調(diào)用的輸出中可以看出,創(chuàng)建的新字符串對(duì)象中保存的是向原字符串中添加文本的結(jié)果。

str 類(lèi)包含大量的用于操作字符串的有用方法。這里不做一一介紹,您可以使用幫助解釋器獲得有關(guān)信息。現(xiàn)在讓我們了解一下四個(gè)有用的函數(shù),并演示其他 str 類(lèi)方法的工具。清單 7 演示了 upper、lower、split 和 join 方法。
清單 7. 字符串方法

>>> sr = "Discover Python!">>> sr.upper()'DISCOVER PYTHON!'>>> sr.lower()'discover python!'>>> sr = "This is a test!">>> sr.split()['This', 'is', 'a', 'test!']>>> sr = '0:1:2:3:4:5:6:7:8:9'>>> sr.split(':')['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']>>> sr=":">>> tp = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')>>> sr.join(tp)'0:1:2:3:4:5:6:7:8:9'

前兩個(gè)方法 upper 和 lower 很容易理解。它們只是分別將字符串都轉(zhuǎn)換成大寫(xiě)字母或小寫(xiě)字母。split 方法很有用,因?yàn)樗梢詫⒁粋€(gè)字符串分成幾個(gè)較小的字符串序列,方法是將令牌字符(或給定字符序列中的任何字符)用作斷開(kāi)位置的指示器。所以,第一個(gè) split 方法示例使用默認(rèn)的令牌將字符串“This is a test”拆分開(kāi),此令牌可以是任何空白字符(這個(gè)序列包括空格、制表符和換行符)。第二個(gè) split 方法演示如何使用不同的令牌字符(本例中使用的是冒號(hào))將一個(gè)字符串分成一系列字符串。最后的一個(gè)例子顯示如何使用 join 方法,該方法的作用與 split 方法相反, 可以使多個(gè)短字符串序列形成一個(gè)長(zhǎng)字符串。在本例中,使用冒號(hào)將 tuple 包含的由單個(gè)字符構(gòu)成的字符串序列連接在一起。

將字符串用作字符的容器

在本文的開(kāi)頭部分,我著重強(qiáng)調(diào)了 Python 中的字符串是不變的字符序列。本系列的第 2 部分 探索 Python,第 2 部分 介紹了 tuple,它也是一個(gè)不變的序列。tuple 通過(guò)以下方式支持訪問(wèn)序列中的元素:使用索引符號(hào),使用片段分離序列中的元素,以及使用特定的片段或?qū)⒉煌钠翁砑釉谝黄饋?lái)創(chuàng)建新的元組。根據(jù)這一情況,您可能想知道是否可以將同一技巧應(yīng)用于 Python 字符串。如清單 8 所示,答案顯然是“可以”。
清單 8. 字符串方法

>>> sr="0123456789">>> sr[0]'0'>>> sr[1] + sr[0]  '10'>>> sr[4:8]   # Give me elements four through seven, inclusive'4567'>>> sr[:-1]   # Give me all elements but the last one'012345678'>>> sr[1:12]  # Slice more than you can chew, no problem'123456789'>>> sr[:-20]  # Go before the start?''>>> sr[12:]   # Go past the end?''>>> sr[0] + sr[1:5] + sr[5:9] + sr[9]'0123456789'>>> sr[10]Traceback (most recent call last): File "<stdin>", line 1, in ?IndexError: string index out of range>>> len(sr)   # Sequences have common methods, like get my length10

在 Python 中,將字符串作為字符序列進(jìn)行處理是非常簡(jiǎn)單的。您可以獲得單個(gè)元素,將不同的元素添加在一起,切出幾個(gè)元素,甚至將不同的片段添加在一起。進(jìn)行切片的一個(gè)非常有用的特性是,在開(kāi)始之前或結(jié)束之后進(jìn)行較多切片不會(huì)拋出異常,只是相應(yīng)地以默認(rèn)方式開(kāi)始或結(jié)束該序列。相反,如果您試圖使用允許范圍之外的索引來(lái)訪問(wèn)單個(gè)元素,則會(huì)得到一個(gè)異常。這種行為說(shuō)明了為什么 len 方法是如此重要。

字符串:功能強(qiáng)大的工具

在本文中,我介紹了 Python 字符串,它是一種不變的字符序列。在 Python 中,您可以使用多個(gè)方法很容易地創(chuàng)建字符串,其中包括使用單引號(hào)、雙引號(hào)或更靈活的方式,即使用一組三個(gè)引號(hào)。假設(shè) Python 中的每個(gè)事物都是一個(gè)對(duì)象,您可以使用底層的 str 類(lèi)方法來(lái)獲得附加功能或直接使用字符串的序列功能。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玉门市| 灌南县| 鲁山县| 思茅市| 五寨县| 满洲里市| 方山县| 襄城县| 城口县| 苏州市| 揭东县| 文昌市| 平乡县| 普安县| 巫山县| 广宗县| 玉龙| 福清市| 伊金霍洛旗| 惠安县| 涟水县| 竹溪县| 雷波县| 芜湖县| 桐乡市| 西华县| 黄骅市| 兴安县| 迁西县| 淄博市| 铁岭市| 富阳市| 滕州市| 鄯善县| 宁津县| 缙云县| 太仓市| 江华| 青浦区| 巴中市| 漠河县|