(python)資料結構—字串

Sweltering發表於2018-11-01

一、概述

  • 由一個個字元組成的有序序列。
  • 使用單引號、雙引號、三引號引住的字元序列。
  • 不可變、線性的資料結構。

二、字串的相關操作

1、元素訪問—-下標

  • 字串是線性的資料結構,可以使用索引去訪問元素。
  • 索引不可超界,否則拋異常IndexError。
  • 字串是可迭代的物件。
1 string = "hello"
2 print(string[1])

執行結果如下:
e
1 string = "hello"
2 for s in string:
3     print(s)

執行結果如下:

h
e
l
l
o

2、“string”.join(iterable)

  • 使用string作為分隔符,將可迭代物件連線起來。
  • 可迭代物件本身內的元素必須是字串型別。
  • 返回一個新的字串,原字串不變。
1 lst = [`1`, `3`, `a`]
2 string = "-".join(lst)
3 print(string)

執行結果如下:
1-3-a

3、+

  • 將兩個字串連線在一起。
  • 返回一個新的字串。
1 string1 = `hello`
2 string2 = `python`
3 string3 = string1 + string2
4 print(string3)

執行結果如下:
hellopython

4、string.split(sep=None, maxsplit=-1)

  • sep:指定分隔符,預設狀態下以空白字元作為分割符。
  • maxsplit:指定最大分割數,預設狀態下遍歷整個字串。
  • 返回一個新的字串列表。
  • 從左向右分割。
  • 還有相反的方法rsplit,用法與其一致,只不過這個方法是從右向左開始分割。
1 string = "I`am a super student"
2 newstr = string.split(`s`, 1)
3 print(newstr)

執行結果如下:
["I`am a ", `uper student`]
1 string = "I`am a super student"
2 newstr = string.rsplit(`s`, 1)
3 print(newstr)

執行結果如下:
["I`am a super ", `tudent`]

5、string.splitlines([keepends=False])

  • keepends:是否保留行分隔符(行分隔符有:
       
       
    等)。
  • 按照行進行分割。
  • 返回一個新的字串列表。
1 string = "ab c

de fg
kl
z"
2 newstr = string.splitlines()
3 print(newstr)

執行結果如下:
[`ab c`, ``, `de fg`, `kl`, `z`]
1 string = "ab c

de fg
kl
z"
2 newstr = string.splitlines(True)
3 print(newstr)

執行結果如下:
[`ab c `, ` `, `de fg `, `kl `, `z`]

6、string.partition(sep)

  • 遇到指定的分隔符sep就將字串分割為三部分(頭、分隔符、尾),如果沒有找到分隔符,就返回頭、2個空元素三部分個部分。
  • 返回一個新的元組。
  • 從左向右開始分割。
  • 還有一個相反的方法rpartition,用法和該方法一致,rpartition是從右向左開始分割的。
1 string = "I`m a super student"
2 newtuple = string.partition(`s`)
3 print(newtuple)

執行結果如下:
("I`m a ", `s`, `uper student`)

7、string.upper()

  • 將字串中的字母全部大寫。
  • 返回一個新的字串。
  • 與其相反的還有一個方法string.lower(),將字串中的字母全部小寫。
1 string = "I`m a super student"
2 newstr = string.upper()
3 print(newstr)

執行結果如下:
I`M A SUPER STUDENT

8、string.swapcase()

  • 將字串中的字母進行大小寫互換
  • 返回一個新的字串。
1 string = "A b"
2 newstr = string.swapcase()
3 print(newstr)

執行結果如下:
a B

9、string.title()

  • 將字串中的每個單詞的是首字母大寫。
  • 返回一個新的字串。
1 string = "hello python"
2 newstr = string.title()
3 print(newstr)

執行結果如下:
Hello Python

10、string.capitalize()

  • 將首個單詞的字母大寫。
  • 返回一個新的字串。
1 string = "hello python"
2 newstr = string.capitalize()
3 print(newstr)

執行結果如下:
Hello python

11、string.center(width[, fillchar])

  • width:按照指定的寬度將字串居中。
  • fillchar:要填充的字元。
  • 返回一個新的字串。
1 string = "abc"
2 newstr = string.center(10, "*")
3 print(newstr)

執行結果如下:
***abc****

12、string.zfill(width)

  • 居右對齊,左邊用0填充。
  • 返回一個新的字串。
1 string = "abc"
2 newstr = string.zfill(10)
3 print(newstr)

執行結果如下:
0000000abc

13、string.ljust(width[, fillchar])

  • 居左對齊,其餘空白位置根據指定的字元進行填充。
  • 返回一個新的字串。
  • 還有一個與其相反的方法string.rjust(width[, fillchar]),居右對其,其餘位置按照指定的字元進行填充。
1 string = "abc"
2 newstr = string.ljust(10, "*")
3 print(newstr)

執行結果如下:
abc*******
1 string = "abc"
2 newstr = string.rjust(10, "*")
3 print(newstr)

執行結果如下:
*******abc

14、string.replace(old, new[, count])

  • old:要被替換的字元。
  • new:要替換的新字元。
  • count:替換的次數,不指定就是全部替換。
  • 從字串中找到匹配的字元old,替換為新的字元new,返回新的字串。
1 string = "aabbcc"
2 newstr = string.replace(`b`, `*` )
3 print(newstr)

執行結果如下:
aa**cc

15、string.strip([chars])

  • 從字串兩端去除指定字符集chars中的所有字元。
  • 如果chars沒有指定,則去除兩端的空白字元。
  • 還有兩個與其相對應的方法lstrip,它是從左開始去除指定字符集中的字元;rstrip,它是從右開始去除指定字符集中的字元。
1 string = "
 
 	 Hello Python 
 	"
2 newstr = string.strip()
3 print(newstr)

執行結果如下:
Hello Python
1 string = "I am very very very sorry"
2 newstr = string.strip(`Iay`)
3 print(newstr)

執行結果如下:
 am very very very sorr

16、string.find(sub[, start[, end]])

  • 在指定的區間[start, end],查詢子串sub,如果找到就返回對應的索引,沒有找到就返回-1.
  • 與其相反的方法是rfind,用於與其一直,只不過rfind是從右往左查詢。
  • 還有一個與其相似的方法是string.index(sub[, start[, end]]),不同的地方是如果沒有找到它會丟擲異常ValueError。
1 string = "I am very very very sorry"
2 newstr = string.find(`very`)
3 print(newstr)

執行結果如下:
5

17、string.count(sub[, start[, end]])

  • 在指定的區間[start, end],統計子串sub出現的次數。
1 string = "I am very very very sorry"
2 newstr = string.count(`very`)
3 print(newstr)

執行結果如下:
3

18、startswith(prefix[, start[, end]])

  • 在指定的區間[start, end],判斷字串是否以prefix開頭
  • 如果是返回Trun,反之返回False
  • 與之相反的還有一個方法string.endswith(suffix[, start[, end]]),它是用來判斷字串是否以suffix結尾的。
1 string = "I am very very very sorry"
2 newstr = string.startswith(`I`)
3 print(newstr)

執行結果如下:
True

19、字串判斷is系列方法

  • string.isalnum()  判斷字串是否有字母和數字組成
  • string.isalpha()  判斷字串是否是字母組成
  • string.isdecimal()  判斷字串是否只包含十進位制數字
  • string.isdigit()  判斷字串是否全部數字(0-9)
  • string.isdentifler()  判斷字串是否由字母和下劃線開頭,其他都是數字,字母、下劃線
  • string.islower()  判斷字串是否全部小寫
  • string.isupper()  判斷字串是否全部大寫
  • string.isspace()  判斷字串是否只包含空白字元

相關文章