天天看點

3Python全棧之路系列之字元串資料類型

字元串類型是python的序列類型,他的本質就是字元序列,而且python的字元串類型是不可以改變的,你無法将原字元串進行修改,但是可以将字元串的一部分複制到新的字元串中,來達到相同的修改效果。

建立字元串類型可以使用單引号或者雙引号又或者三引号來建立,執行個體如下:

單引号

<code>&gt;&gt; string </code><code>=</code> <code>'ansheng'</code>

<code># type是檢視一個變量的資料類型</code>

<code>&gt;&gt;&gt; </code><code>type</code><code>(string)</code>

<code>&lt;</code><code>class</code> <code>'str'</code><code>&gt;</code>

雙引号

<code>&gt;&gt;&gt; string </code><code>=</code> <code>"ansheng"</code>

<code>&gt;&gt;&gt; </code><code>type</code><code>(string) </code>

三引号

<code>&gt;&gt;&gt; string </code><code>=</code> <code>"""ansheng"""</code>

還可以指定類型

<code>&gt;&gt;&gt; var</code><code>=</code><code>str</code><code>(</code><code>"string"</code><code>)</code>

<code>&gt;&gt;&gt; var</code>

<code>'string'</code>

<code>&gt;&gt;&gt; </code><code>type</code><code>(var)</code>

每個類的方法其實都是很多的,無論我們在學習的過程中個還是工作的時候,常用的其實沒有多少,是以我們沒必要去可以得記那麼多,有些方法我們隻需要對其有個印象就ok了,忘了的時候可以google一下。

首字母變大寫

capitalize(self):

<code>&gt;&gt;&gt; name</code><code>=</code><code>"ansheng"</code>

<code>&gt;&gt;&gt; name.capitalize()</code>

<code>'Ansheng'</code>

内容居中,width:字元串的總寬度;fillchar:填充字元,預設填充字元為空格。

center(self, width, fillchar=None):

<code># 定義一個字元串變量,名為"string",内容為"hello word"</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"hello word"</code>

<code># 輸出這個字元串的長度,用len(value_name)</code>

<code>&gt;&gt;&gt; </code><code>len</code><code>(string)</code>

<code>10</code>

<code># 字元串的總寬度為10,填充的字元為"*"</code>

<code>&gt;&gt;&gt; string.center(</code><code>10</code><code>,</code><code>"*"</code><code>)</code>

<code>'hello word'</code>

<code># 如果設定字元串的總産都為11,那麼減去字元串長度10還剩下一個位置,這個位置就會被*所占用</code>

<code>&gt;&gt;&gt; string.center(</code><code>11</code><code>,</code><code>"*"</code><code>)</code>

<code>'*hello word'</code>

<code># 是從左到右開始填充</code>

<code>&gt;&gt;&gt; string.center(</code><code>12</code><code>,</code><code>"*"</code><code>)</code>

<code>'*hello word*'</code>

統計字元串裡某個字元出現的次數,可選參數為在字元串搜尋的開始與結束位置。

count(self, sub, start=None, end=None):

參數

描述

sub

搜尋的子字元串;

start

字元串開始搜尋的位置。預設為第一個字元,第一個字元索引值為0;

end

字元串中結束搜尋的位置。字元中第一個字元的索引為 0。預設為字元串的最後一個位置;

<code># 預設搜尋出來的"l"是出現過兩次的</code>

<code>&gt;&gt;&gt; string.count(</code><code>"l"</code><code>)</code>

<code>2</code>

<code># 如果指定從第三個位置開始搜尋,搜尋到第六個位置,"l"則出現過一次</code>

<code>&gt;&gt;&gt; string.count(</code><code>"l"</code><code>,</code><code>3</code><code>,</code><code>6</code><code>)</code>

<code>1</code>

解碼

decode(self, encoding=None, errors=None):

<code># 定義一個變量内容為中文</code>

<code>temp </code><code>=</code> <code>"中文"</code>

<code># 把變量的字元集轉化為UTF-8</code>

<code>temp_unicode </code><code>=</code> <code>temp.decode(</code><code>"utf-8"</code><code>)</code>

編碼,針對unicode

encode(self, encoding=None, errors=None):

<code># 定義一個變量内容為中文,字元集為UTF-8</code>

<code>temp </code><code>=</code> <code>u</code><code>"中文"</code>

<code># 編碼,需要指定要轉換成什麼編碼</code>

<code>temp_gbk </code><code>=</code> <code>temp_unicode.encode(</code><code>"gbk"</code><code>)</code>

于判斷字元串是否以指定字尾結尾,如果以指定字尾結尾傳回True,否則傳回False。

endswith(self, suffix, start=None, end=None):

suffix

字尾,可能是一個字元串,或者也可能是尋找字尾的tuple

開始,切片從這裡開始

結束,片到此為止

<code># 判斷字元串中是否已"d"結尾,如果是則傳回"True"</code>

<code>&gt;&gt;&gt; string.endswith(</code><code>"d"</code><code>)</code>

<code>True</code>

<code># 判斷字元串中是否已"t"結尾,不是則傳回"False"</code>

<code>&gt;&gt;&gt; string.endswith(</code><code>"t"</code><code>)</code>

<code>False</code>

<code># 制定搜尋的位置,實則就是從字元串位置1到7來進行判斷,如果第七個位置是"d",則傳回True,否則傳回False</code>

<code>&gt;&gt;&gt; string.endswith(</code><code>"d"</code><code>,</code><code>1</code><code>,</code><code>7</code><code>)</code>

把字元串中的tab符号(‘\t’)轉為空格,tab符号(‘\t’)預設的空格數是8。

expandtabs(self, tabsize=None):

tabsize

指定轉換字元串中的 tab 符号(‘\t’)轉為空格的字元數

<code>&gt;&gt;&gt; string</code><code>=</code><code>"hello       word"</code>

<code># 輸出變量"string"内容的時候會發現中間有一個"\t",這個其實就是一個`tab`鍵</code>

<code>&gt;&gt;&gt; string</code>

<code>'hello\tword'</code>

<code># 把`tab`鍵換成一個空格</code>

<code>&gt;&gt;&gt; string.expandtabs(</code><code>1</code><code>)</code>

<code># 把`tab`鍵換成十個空格</code>

<code>&gt;&gt;&gt; string.expandtabs(</code><code>10</code><code>)</code>

<code>'hello     word'</code>

檢測字元串中是否包含子字元串str,如果指定beg(開始)和end(結束)範圍,則檢查是否包含在指定範圍内,如果包含子字元串傳回開始的索引值,否則傳回-1。

find(self, sub, start=None, end=None):

str

指定檢索的字元串

beg

開始索引,預設為0

結束索引,預設為字元串的長度

<code># 傳回`o`在目前字元串中的位置,如果找到第一個`o`之後就不會再繼續往下面尋找了</code>

<code>&gt;&gt;&gt; string.find(</code><code>"o"</code><code>)</code>

<code>4</code>

<code># 從第五個位置開始搜尋,傳回`o`所在的位置</code>

<code>&gt;&gt;&gt; string.find(</code><code>"o"</code><code>,</code><code>5</code><code>)</code>

<code>7</code>

字元串格式,後續文章會提到。

format(args, *kwargs):

檢測字元串中是否包含子字元串 str ,如果指定 beg(開始) 和 end(結束) 範圍,則檢查是否包含在指定範圍内,該方法與 python find()方法一樣,隻不過如果str不在 string中會報一個異常。

index(self, sub, start=None, end=None):

<code># 傳回字元串所在的位置</code>

<code>&gt;&gt;&gt; string.index(</code><code>"o"</code><code>)</code>

<code># 如果查找一個不存在的字元串那麼就會報錯</code>

<code>&gt;&gt;&gt; string.index(</code><code>"a"</code><code>)</code>

<code>Traceback (most recent call last):</code>

<code>  </code><code>File</code> <code>"&lt;stdin&gt;"</code><code>, line </code><code>1</code><code>, </code><code>in</code> <code>&lt;module&gt;</code>

<code>ValueError: substring </code><code>not</code> <code>found</code>

法檢測字元串是否由字母和數字組成,如果string至少有一個字元并且所有字元都是字母或數字則傳回True,否則傳回False

isalnum(self):

<code>&gt;&gt;&gt; string</code><code>=</code><code>"hes2323"</code>

<code># 如果存在數字或字母就傳回`True`,否則傳回`False`</code>

<code>&gt;&gt;&gt; string.isalnum()</code>

<code># 中間有空格傳回的就是False了</code>

檢測字元串是否隻由字母組成。

isalpha(self):

<code># 如果全部都是字母就傳回`True`</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"helloword"</code>

<code>&gt;&gt;&gt; string.isalpha()</code>

<code># 否則就傳回False</code>

檢測字元串是否隻由數字組成

isdigit(self):

<code># 如果變量裡面都是數字就傳回`True`,否則就傳回`False`</code>

<code>&gt;&gt;&gt; string.isdigit()</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"2323"</code>

檢測字元串是否由小寫字母組成

islower(self):

<code># 如果變量内容全部都是小寫字母就傳回`True`,否則就傳回`False`</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"hesasdasd"</code>

<code>&gt;&gt;&gt; string.islower()</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"HelloWord"</code>

檢測字元串是否隻由空格組成

isspace(self):

<code># 如果變量内容由空格來組成,那麼就傳回`True`否則就傳回`False`</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>" "</code>

<code>&gt;&gt;&gt; string.isspace()</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"a"</code>

檢測字元串中所有的單詞拼寫首字母是否為大寫,且其他字母為小寫。

istitle(self):

<code># 如果變量的内容首字母是大寫并且其他字母為小寫,那麼就傳回`True`,否則會傳回`False`</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"Hello Word"</code>

<code>&gt;&gt;&gt; string.istitle()</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"Hello word"</code>

檢測字元串中所有的字母是否都為大寫。

isupper(self):

<code># 如果變量值中所有的字母都是大寫就傳回`True`,否則就傳回`False`</code>

<code>&gt;&gt;&gt; string.isupper()</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"HELLO WORD"</code>

将序列中的元素以指定的字元連接配接生成一個新的字元串。

join(self, iterable):

<code>&gt;&gt;&gt; string</code><code>=</code><code>(</code><code>"a"</code><code>,</code><code>"b"</code><code>,</code><code>"c"</code><code>)</code>

<code>&gt;&gt;&gt; </code><code>'-'</code><code>.join(string)</code>

<code>'a-b-c'</code>

傳回一個原字元串左對齊,并使用空格填充至指定長度的新字元串。如果指定的長度小于原字元串的長度則傳回原字元串。

ljust(self, width, fillchar=None):

width

指定字元串長度

fillchar

填充字元,預設為空格

<code>&gt;&gt;&gt; string</code><code>=</code><code>"helo word"</code>

<code>9</code>

<code># 定義的長度減去字元串的長度,剩下的就開始填充</code>

<code>&gt;&gt;&gt; string.ljust(</code><code>15</code><code>,</code><code>'*'</code><code>)</code>

<code>'helo word******'</code>

轉換字元串中所有大寫字元為小寫。

lower(self):

<code># 把變量裡的大寫全部轉換成小寫</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"Hello WORD"</code>

<code>&gt;&gt;&gt; string.lower()</code>

截掉字元串左邊的空格或指定字元

lstrip(self, chars=None):

chars

指定截取的字元

<code># 從左側開始删除比對的字元串</code>

<code>&gt;&gt;&gt; string.lstrip(</code><code>"hello "</code><code>)</code>

<code>'word'</code>

用來根據指定的分隔符将字元串進行分割,如果字元串包含指定的分隔符,則傳回一個3元的tuple,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。

partition(self, sep):

指定的分隔符

<code># 傳回的是一個元組類型</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"www.ansheng.me"</code>

<code>&gt;&gt;&gt; string.partition(</code><code>"ansheng"</code><code>)</code>

<code>(</code><code>'www.'</code><code>, </code><code>'ansheng'</code><code>, </code><code>'.me'</code><code>)</code>

把字元串中的 old(舊字元串)替換成new(新字元串),如果指定第三個參數max,則替換不超過max次

replace(self, old, new, count=None):

old

将被替換的子字元串

new

新字元串,用于替換old子字元串

count

可選字元串, 替換不超過count次

<code># 把就字元串`www.`換成新字元串`https://`</code>

<code>&gt;&gt;&gt; string.replace(</code><code>"www."</code><code>,</code><code>"https://"</code><code>)</code>

<code>'https://blog.ansheng.me'</code>

<code># 就字元串`w`換成新字元串`a`隻替換`2`次</code>

<code>&gt;&gt;&gt; string.replace(</code><code>"w"</code><code>,</code><code>"a"</code><code>,</code><code>2</code><code>)</code>

<code>'aaw.ansheng.me'</code>

傳回字元串最後一次出現的位置,如果沒有比對項則傳回-1。

rfind(self, sub, start=None, end=None):

查找的字元串

開始查找的位置,預設為0

結束查找位置,預設為字元串的長度

<code># rfind其實就是反向查找</code>

<code>&gt;&gt;&gt; string.rfind(</code><code>"o"</code><code>)</code>

<code># 指定查找的範圍</code>

<code>&gt;&gt;&gt; string.rfind(</code><code>"o"</code><code>,</code><code>0</code><code>,</code><code>6</code><code>)</code>

傳回子字元串str在字元串中最後出現的位置,如果沒有比對的字元串會報異常,你可以指定可選參數<code>[beg:end]</code>設定查找的區間。

rindex(self, sub, start=None, end=None):

<code># 反向查找索引</code>

<code>&gt;&gt;&gt; string.rindex(</code><code>"o"</code><code>)</code>

<code># 如果沒有查找到就報錯</code>

<code>&gt;&gt;&gt; string.rindex(</code><code>"a"</code><code>)</code>

傳回一個原字元串右對齊,并使用空格填充至長度 width 的新字元串。如果指定的長度小于字元串的長度則傳回原字元串。

rjust(self, width, fillchar=None):

指定填充指定字元後中字元串的總長度

填充的字元,預設為空格

<code>&gt;&gt;&gt; string.rjust(</code><code>10</code><code>,</code><code>"*"</code><code>)</code>

<code>&gt;&gt;&gt; string.rjust(</code><code>12</code><code>,</code><code>"*"</code><code>)</code>

<code>'**hello word'</code>

從右到左通過指定分隔符對字元串進行切片,如果參數num有指定值,則僅分隔num個子字元串

rsplit(self, sep=None, maxsplit=None):

隔符,預設為空格

num

分割次數

<code>&gt;&gt;&gt; string.rsplit(</code><code>"."</code><code>,</code><code>1</code><code>)</code>

<code>[</code><code>'www.ansheng'</code><code>, </code><code>'me'</code><code>]</code>

<code>&gt;&gt;&gt; string.rsplit(</code><code>"."</code><code>,</code><code>2</code><code>)</code>

<code>[</code><code>'www'</code><code>, </code><code>'ansheng'</code><code>, </code><code>'me'</code><code>]</code>

删除string字元串末尾的指定字元(預設為空格).

rstrip(self, chars=None):

指定删除的字元

<code># 從尾部開始比對删除</code>

<code>&gt;&gt;&gt; string.rstrip(</code><code>"d"</code><code>)</code>

<code>'hello wor'</code>

從左到右通過指定分隔符對字元串進行切片,如果參數num有指定值,則僅分隔num個子字元串

split(self, sep=None, maxsplit=None):

分隔符,預設為空格

<code># 指定切一次,以`.`來分割</code>

<code>&gt;&gt;&gt; string.split(</code><code>"."</code><code>,</code><code>1</code><code>)</code>

<code>[</code><code>'www'</code><code>, </code><code>'ansheng.me'</code><code>]</code>

<code># 指定切二次,以`.`來分割</code>

<code>&gt;&gt;&gt; string.split(</code><code>"."</code><code>,</code><code>2</code><code>)</code>

按照行分隔,傳回一個包含各行作為元素的清單,如果num指定則僅切片num個行.

splitlines(self, keepends=False):

分割行的次數

<code># 定義一個有換行的變量,`\n`可以劃行</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"www\nansheng\nme"</code>

<code># 輸出内容</code>

<code>&gt;&gt;&gt; </code><code>print</code><code>(string)</code>

<code>www</code>

<code>ansheng</code>

<code>me</code>

<code># 把有行的轉換成一個清單</code>

<code>&gt;&gt;&gt; string.splitlines(</code><code>1</code><code>)</code>

<code>[</code><code>'www\n'</code><code>, </code><code>'ansheng\n'</code><code>, </code><code>'me'</code><code>]</code>

檢查字元串是否是以指定子字元串開頭,如果是則傳回 True,否則傳回 False。如果參數 beg 和 end 指定值,則在指定範圍内檢查。

startswith(self, prefix, start=None, end=None):

檢測的字元串

strbeg

可選參數用于設定字元串檢測的起始位置

strend

可選參數用于設定字元串檢測的結束位置

<code>&gt;&gt;&gt; string.startswith(</code><code>"www"</code><code>)</code>

<code>&gt;&gt;&gt; string.startswith(</code><code>"www"</code><code>,</code><code>3</code><code>)</code>

移除字元串頭尾指定的字元(預設為空格)

strip(self, chars=None):

移除字元串頭尾指定的字元

<code>&gt;&gt;&gt; string</code><code>=</code><code>" www.ansheng.me "</code>

<code>' www.ansheng.me '</code>

<code># 删除空格</code>

<code>&gt;&gt;&gt; string.strip()</code>

<code>'www.ansheng.me'</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"_www.ansheng.me_"</code>

<code># 指定要把左右兩邊的"_"删除掉</code>

<code>&gt;&gt;&gt; string.strip(</code><code>"_"</code><code>)</code>

用于對字元串的大小寫字母進行轉換,大寫變小寫,小寫變大寫

swapcase(self):

<code>&gt;&gt;&gt; string</code><code>=</code><code>"hello WORD"</code>

<code>&gt;&gt;&gt; string.swapcase()</code>

<code>'HELLO word'</code>

傳回”标題化”的字元串,就是說所有單詞都是以大寫開始,其餘字母均為小寫。

title(self):

<code>&gt;&gt;&gt; string.title()</code>

<code>'Hello Word'</code>

根據參數table給出的表(包含 256 個字元)轉換字元串的字元, 要過濾掉的字元放到 del 參數中。

translate(self, table, deletechars=None):

table

翻譯表,翻譯表是通過maketrans方法轉換而來

deletechars

字元串中要過濾的字元清單

将字元串中的小寫字母轉為大寫字母

upper(self):

<code>&gt;&gt;&gt; string.upper()</code>

<code>'HELLO WORD'</code>

傳回指定長度的字元串,原字元串右對齊,前面填充0

zfill(self, width):

指定字元串的長度。原字元串右對齊,前面填充0

<code>&gt;&gt;&gt; string.zfill(</code><code>10</code><code>)</code>

<code>&gt;&gt;&gt; string.zfill(</code><code>20</code><code>)</code>

<code>'0000000000hello word'</code>

以UTF-8編碼的時候,一個漢字是三個位元組,一個位元組是八位

3.5.x執行個體

代碼如下:

<code>#!/usr/bin/env python</code>

<code># _*_ coding:utf-8 _*_</code>

<code>var </code><code>=</code> <code>"中文"</code>

<code>for</code> <code>n </code><code>in</code> <code>var:</code>

<code>    </code><code>print</code><code>(n)</code>

<code>print</code><code>(</code><code>"================"</code><code>)</code>

<code>var2 </code><code>=</code> <code>"zhongwen"</code>

<code>for</code> <code>n </code><code>in</code> <code>var2:</code>

執行結果:

<code>C:\Python35\python.exe F:</code><code>/</code><code>Python_code</code><code>/</code><code>sublime</code><code>/</code><code>Day03</code><code>/</code><code>str</code><code>.py</code>

<code>中</code>

<code>文</code>

<code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code>

<code>z</code>

<code>h</code>

<code>o</code>

<code>n</code>

<code>g</code>

<code>w</code>

<code>e</code>

2.7.x執行個體

執行結果

<code>C:\Python27\python.exe F:</code><code>/</code><code>Python_code</code><code>/</code><code>sublime</code><code>/</code><code>Day03</code><code>/</code><code>str</code><code>.py</code>

通過上面的執行個體可以知道,<code>Python3.5.x</code>在輸出中文或者英文的時候是按照一個字元一個字元來輸出的,但是在<code>Python2.7.x</code>就不這樣了,<code>Python2.7.x</code>是按照位元組來進行輸出的,可以看到在輸出中文的時候是亂碼的,而且還輸出了六次,因為在UTF-8編碼的情況下一個漢字是等于三個位元組的,是以輸出了六個亂碼的字元。

在Python3.5.x裡面是既可以輸出漢字,也可以把輸出位元組的,利用bytes這個方法,bytes可以将字元串轉換為位元組

<code>var</code><code>=</code><code>"中文"</code>

<code>    </code><code>bytes_list </code><code>=</code> <code>bytes(n, encoding</code><code>=</code><code>'utf-8'</code><code>)</code>

<code>    </code><code># 十六進制輸出</code>

<code>    </code><code>print</code><code>(bytes_list)</code>

<code>    </code><code>for</code> <code>x </code><code>in</code> <code>bytes_list:</code>

<code>        </code><code># 十進制,bin(x)二進制</code>

<code>        </code><code>print</code><code>(x,</code><code>bin</code><code>(x))</code>

輸出的結果

<code># 字元串</code>

<code># 十六進制</code>

<code>b</code><code>'\xe4\xb8\xad'</code>

<code># 228=十進制,0b11100100=二進制</code>

<code>228</code> <code>0b11100100</code>

<code>184</code> <code>0b10111000</code>

<code>173</code> <code>0b10101101</code>

<code>b</code><code>'\xe6\x96\x87'</code>

<code>230</code> <code>0b11100110</code>

<code>150</code> <code>0b10010110</code>

<code>135</code> <code>0b10000111</code>

b代表十六進制,\xe4這樣的是一個十六進制的位元組

索引是指某個值在清單或别的資料類型中的一個位置

定義一個清單,檢視清單中<code>Linux</code>值對應在清單中的位置

<code>&gt;&gt;&gt; list_os </code><code>=</code> <code>[</code><code>"Windows"</code><code>,</code><code>"Linux"</code><code>,</code><code>"Mac"</code><code>,</code><code>"Unix"</code><code>]</code>

<code>&gt;&gt;&gt; list_os.index(</code><code>"Linux"</code><code>)</code>

<code>&gt;&gt;&gt; list_os[</code><code>1</code><code>]</code>

<code>'Linux'</code>

Python允許你對某些字元進行轉義,以此來實作一些難以單純用字元描述的效果

<code># 常用的内容也轉義也就是`\n`和`\t`了,`\n`是用來換行的,`\t`是用來代替一個`tab`鍵</code>

<code>&gt;&gt;&gt; string</code><code>=</code><code>"My \n Name  \t is"</code>

<code>My</code>

<code> </code><code>Name    </code><code>is</code>

你可以使用<code>+</code>号将多個字元串或字元串變量拼接起來

<code>&gt;&gt;&gt; a</code><code>=</code><code>"my "</code>

<code>&gt;&gt;&gt; b</code><code>=</code><code>"name "</code>

<code>&gt;&gt;&gt; c</code><code>=</code><code>"is "</code>

<code>&gt;&gt;&gt; d</code><code>=</code><code>"ansheng"</code>

<code>&gt;&gt;&gt; a</code><code>+</code><code>b</code><code>+</code><code>c</code><code>+</code><code>d</code>

<code>'my name is ansheng'</code>

切片操作符是序列名後跟一個方括号,方括号中有一對可選的數字,并用冒号分割。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒号是必須的,切片操作符中的第一個數表示切片開始的位置,第二個數表示切片到哪裡結束,第三個數表示切片間隔數。如果不指定第一個數,Python就從序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。注意,傳回的序列從開始位置開始 ,剛好在結束位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外。

<code>&gt;&gt;&gt; os</code><code>=</code><code>"Linux"</code>

<code>&gt;&gt;&gt; os</code>

<code>&gt;&gt;&gt; os[</code><code>0</code><code>:</code><code>2</code><code>]</code>

<code>'Li'</code>

<code>&gt;&gt;&gt; os[</code><code>0</code><code>:</code><code>4</code><code>:</code><code>2</code><code>]</code>

<code>'Ln'</code>

更多執行個體如下

切片符

說明

[:]

提取從開頭到結尾的整個字元串

[start:]

從start到結尾的字元串

[:end]

從開頭提取到end - 1

[start:end]

從start提取到end - 1

[start : end : setp]

從start提取到end-1,每setp個字元提取一個

索引和切片同時适用于字元串、清單與元組

索引通常用于查找某一個字元串或值

切片通常用于查找某一個範圍内的字元串或值

執行個體:

<code># 定義一個清單,清單内有三個元素</code>

<code>&gt;&gt;&gt; var</code><code>=</code><code>[</code><code>"Linux"</code><code>,</code><code>"Win"</code><code>,</code><code>"Unix"</code><code>]</code>

<code># 通過索引取到了一個值</code>

<code>&gt;&gt;&gt; var[</code><code>0</code><code>]</code>

<code># 通過切片取到了多個值</code>

<code>&gt;&gt;&gt; var[</code><code>0</code><code>:</code><code>2</code><code>]</code>

<code>[</code><code>'Linux'</code><code>, </code><code>'Win'</code><code>]</code>

<code>&gt;&gt;&gt; var[</code><code>1</code><code>:</code><code>3</code><code>]</code>

<code>[</code><code>'Win'</code><code>, </code><code>'Unix'</code><code>]</code>

本文轉自 Edenwy  51CTO部落格,原文連結:http://blog.51cto.com/edeny/1910785,如需轉載請自行聯系原作者