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

首頁 > 開發(fā) > Python > 正文

全面掌握Python字符串切片方法

2023-04-26 12:04:39
字體:
供稿:網(wǎng)友

在《Python字符串的索引與訪問字符串中的字符》文章中介紹了使用字符串位置索引可以訪問字符串中的單個字符的方法,但有時,我們需要訪問字符串中的若干個連續(xù)的字符,即使用字符串中的一個子串。Python針對這種情況也提供了比較方便的處理方式。

簡單說,Python字符串切片就是按照指定索引截取字符串中的片段構(gòu)成一個新的字符串

一、語法結(jié)構(gòu)

str_object[start_pos : end_pos : step]

切片從 start_pos 開始(包含起始位置索引處的字符),結(jié)束于 end_pos(不包含結(jié)束位置索引處的字符);

step 表示步長,即每step個字符截取1次字符;

Python字符串切片語法中的三個參數(shù)都是可選的,start_pos 默認為0,end_pos 默認為字符串長度(字符個數(shù)),step 默認為1;

在Python中,對于任何索引 i ,都遵循 s[:i] + s[i:] = s 的規(guī)則。

截取字符串中的任何字符索引 i 在源字符串中的索引應滿足:

start_pos <= i < end_pos

即截取時,包含開始位置的字符,而不包含結(jié)束位置處的字符。

當指定步長 step 時,截取的字符的索引 i 應該是:

i = start_pos + n * step , n 取 0,1,2......

同時,i < end_pos ,即指定步長時,截取的字符也不包含結(jié)束位置 end_pos 處的字符。

二、Python字符串切片示例

1、使用 start_pos 參數(shù)

>>> str1 = "Python is easy."
>>> str2 = str1[3 : ]  # 從索引位置3,即字符h開始到最后
>>> print(str2)
hon is easy.
>>> s = "武林網(wǎng)VEVB"
>>> print(s[3 : ])  # 從索引位置3,即字符 I 開始到最后
VEVB

在Python中的運行情況截圖:

Python字符串切片:指定開頭索引

2、只使用 end_pos 參數(shù)

>>> str1 = "Python is easy."
>>> str2 = str1[:6] # 截取前 6 個字符,即索引位置0-5
>>> print(str2)
Python
>>> s = "武林網(wǎng)VEVB"
>>> print(s[:3]) # 截取前3個字符,即索引0-2處的字符
武林網(wǎng)

end_pos截取停止位置,不包含在截取范圍內(nèi)

在Python中的運行情況:

Python字符串切片:指定結(jié)束位置

3、只指定 step 參數(shù)

>>> str1 = "http://www.survivalescaperooms.com"
>>> str2 = str1[ : : 2]
>>> print(str2)
ht:/w.ieucm
>>> s = "武林網(wǎng)VEVB"
>>> s[ : : 3]
'翔I園'
>>>

在指定步長 step 參數(shù)時,處于開始索引位置處的字符是一定包含在內(nèi)的,然后是按照 step 指定的步長,每次從當前索引處加 step 步長進行截取。如下圖陰影處示意。

                                           
str1 h t t p : / / w w w . b i y e 5 u . c o m
字符索引 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
step   1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
str2 h   t   :   /   w   .   i   e   u   c   m

在Python中的運行效果如下圖:

4、同時指定 start_pos 和 end_pos 參數(shù)

>>> s1 = "武林網(wǎng)VEVB提供詳細的Python教程"
>>> s1[7 : 11]
'提供詳細'
>>> s2 = "Python/tR/tSPSS/r/nJava"
>>> s2[4 : 16]
'on/tR/tSPSS/r/nJ'
>>>

要注意的是:end_pos 參數(shù)是停止位置索引,不包含在截取范圍內(nèi),如 s1[7 : 11] 是截取的索引為 7 到 10 處的字符。

還要注意到,轉(zhuǎn)義字符也算作一個字符,如 s2 中的 /t ,/r 和 /n ,它們分別被作為一個字符來處理。

在Python中的運行情況如下圖所示:

Python字符串切片:指定開始索引和結(jié)束索引

5、同時指定3個參數(shù)的情況

>>> str1 = "http://www.survivalescaperooms.com"
>>> str2 = str1[ 7 : 17 : 3]
>>> print(str2)
w.yu
>>> "武林網(wǎng)VEVB"[: 6 : 2]
'宇I(lǐng)樂'
>>>

從這個例子中可以看出,我們也可以直接使用字符串本值來進行切片截取。

6、使用負數(shù)索引

在進行字符串切片時,也可以使用負數(shù)索引,從后往前進行索引操作。

str1 = "www.survivalescaperooms.com"
str2 = str1[-3 : ] 
print(str2)
str3 = str1[ :-4]
print(str3)
str4 = str1[-10: -4]
print(str4)
str5 = str1[-13 : -1 : 2]
print(str5)
str6 = str1[-1 : -13 : -2]
print(str6)

start_posend_pos 為負數(shù)時,是相對于字符串序列末端進行的,從末端進行時,最后一個字符的索引為 -1,然后往前依次為 -2 ,-3 ...。

當 step 為負數(shù)時,開始位置是從字符串后端開始,結(jié)束位置在字符串前端,所以 這時如需要切到想要的子字符串,需要保證: start_pos > end_pos

本例的示意圖如下所示:圖中綠色方塊代表截取開始位置,灰色方塊代表截取停止位置。

字符串參數(shù)為負時截取示意圖
                             
str1 w w w . b i y e 5 u . c o m
字符索引 7 8 9 10 11 12 13 14 15 16 17 18 19 20
負數(shù)索引 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
str2=str1[-3:]                       c o m
str3=str1[:-4] w w w . b i y e 5 u        
str4=str1[-10:-4]         b i y e 5 u        
str5=str1[-13:-1:2]     1 2 1 2 1 2 1 2 1 2 1  
  w   .   i   e   u   c    

step為正,從左往右生成新字符串: 'w.ieuc'
str6=[-1:-13:-2]     -1 -2 -1 -2 -1 -2 -1 -2 -1 -2 -1  
      .   i   e   u   c   m

step為負:從右往左生成新字符串:'mcuei.'

輸出結(jié)果:

com
www.VeVb
VeVb
w.ieuc
mcuei.

我們可以使用字符串切片功能把字符串進行翻轉(zhuǎn):

s1 = "武林網(wǎng)VEVB"
s2 = s1[ : : -1]
print(s2)

輸出結(jié)果:

園樂TI亭宇翔

7、省略所有參數(shù)

當使用下面兩種形式時,相當于各參數(shù)取默認值

s = "Hello,Python!"
s1 = s[ : : ] # 從頭截到尾
s2 = s[ : : : ] # 從頭截到尾,默認步長1
print('s1=', s1)
print('s2=', s2)

輸出結(jié)果:

Hello,Python!
Hello,Python!

本文(完)

Python字符串切片問題

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇巴县| 清流县| 通山县| 射洪县| 桃江县| 扎囊县| 绥滨县| 龙里县| 增城市| 油尖旺区| 遂平县| 得荣县| 梓潼县| 柘荣县| 特克斯县| 屏山县| 石屏县| 清水县| 神池县| 建平县| 海阳市| 安阳市| 旺苍县| 荃湾区| 抚远县| 大安市| 镇江市| 泸水县| 疏勒县| 措美县| 祁阳县| 台北市| 义马市| 永新县| 福海县| 海伦市| 古交市| 杂多县| 唐山市| 沙河市| 通榆县|