天天看點

給妹子講python-S01E05字元串的基本用法

python中一項很重要的工作就是文本處理,與之緊密相關的資料類型是字元串,從這一集開始,我們由淺入深介紹一系列關于字元串的内容。

【妹子說】之前剛剛介紹了容器,字元串應該可以看做是字元的容器吧?

可以這麼了解,字元串就是由單個字元組成的有序序列,且不可修改。

類比前面提到的清單,如正向索引、反向索引、分片索引等基于偏移量的基本操作,字元串都是支援的。

下面列舉一些與清單類似的操作,需要強調一點的是字元串的分片操作,分片就是從一整個字元串中分離提取出一部分内容(即子字元串),進而擷取所需的部分資料,并且python傳回的是包含所擷取元素的新對象。

分片操作在實際使用時用處很多,比如:我們可以在指令行字元串中去分離感興趣的參數清單。

s = 'abcdefg'
print(s[0])
print(s[-2])
print(s[1:4])
print(s[1:4:2])
print(s[-1:1:-1])
print(len(s))

a
f
bcd
bd
gfedc
7
           

再來看看字元串的不可修改特性。

s = 'abcd'
s[0] = '4'

Traceback (most recent call last):
 File "E:/12homework/12homework.py", line 2, in <module>
   s[0] = '4'
TypeError: 'str' object does not support item assignment
           

再說說兩個字元串之間的連接配接操作。即所謂的字元串相加,傳回連接配接後生成的新字元串

s1 = 'abcd'
s2 = '1234'
s = s1 + s2
print(s)

abcd1234
           

【妹子說】那字元串的指派,也是用=直接指派吧

對,不過針對指派,有深拷貝和淺拷貝兩種意義截然不同的方式。

下面這種指派方法實際上是對象的深拷貝,即指派左右的兩個對象具有相同值,但是是位于不同記憶體片區的對象

s = ['abcdefg']
a = s[:]
print(a)
print(s is a)

['abcdefg']
False
           

而如果是像下面這樣直接指派,則左右兩個對象實際上被配置設定的是同一個記憶體空間,即所謂的淺拷貝

s1 = 'abcdefg'
s2 = s1
print(s1 == s2)

True
           

【妹子說】明白了,那字元串作為一種序列,也能進行周遊和成員關系測試吧。

當然,可以使用for語句在一個字元串中進行循環疊代,并使用in操作符對字元和子字元串進行成員關系的測試

s = 'hacker'
for c in s:
    print(c, end=' ')

h a c k e r 


print('k' in 'school')

False
           

以上都是字元串與容器相類似的一些操作,有之前幾集學習的基礎,接受起來還是挺容易的。

【妹子說】把字元串和容器序列進行類比,很多用法就不言自明了。這些共性的方法倒是好了解,也比較簡單,那後面再介紹一些字元串的獨門秘訣吧。

原文釋出時間為:2018-07-27

本文作者:醬油哥

本文來自雲栖社群合作夥伴“

Python愛好者社群

”,了解相關資訊可以關注“