Python字符串

字符串是Python中最受歡迎、最常使用的數據類型。可以通過用引號括起字符來創建它們。 Python將單引號與雙引號相同。創建字符串和向一個變量賦值一樣簡單。 例如 -

var1 = 'Hello World!'
var2 = "Python Programming"

1.訪問字符串中的值

Python不支持字符類型; 字符會被視爲長度爲1的字符串,因此也被認爲是一個子字符串。要訪問子串,請使用方括號的切片加上索引或直接使用索引來獲取子字符串。 例如 -

#!/usr/bin/python3

var1 = 'Hello World!'
var2 = "Python Programming"

print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5]) # 切片加索引

當執行上述代碼時,會產生以下結果 -

var1[0]:  H
var2[1:5]:  ytho

2.更新字符串

可以通過將變量分配給另一個字符串來「更新」現有的字符串。 新值可以與其原值相關或完全不同的字符串。 例如 -

#!/usr/bin/python3

var1 = 'Hello World!'

print ("Updated String :- ", var1[:6] + 'Python')

當執行上述代碼時,會產生以下結果 -

Updated String :-  Hello Python

3.轉義字符

下表是可以用反斜槓表示法表示轉義或不可打印字符的列表。單引號以及雙引號字符串的轉義字符被解析。

反斜線符號

十六進制字符

描述/說明

\a

0x07

鈴聲或警報

\b

0x08

退格

\cx

Control-x

\C-x

Control-x

\e

0x1b

Escape

\f

0x0c

換頁

\M-\C-x

Meta-Control-x

\n

0x0a

新一行

\nnn

八進制符號,其中n在0.7範圍內

\r

0x0d

回車返回

\s

0x20

空格

\t

0x09

製表符

\v

0x0b

垂直製表符

\x

字符x

\xnn

十六進制符號,其中n0~9a~fA~F範圍內

4.字符串特殊運算符

假設字符串變量a保存字符串值’Hello‘,變量b保存字符串值’Python‘,那麼 -

運算符

說明

示例

+

連接 - 將運算符的兩邊的值添加

a + b 結果爲 HelloPython

*

重複 - 創建新字符串,連接相同字符串的多個副本

a*2 結果爲 HelloHello

[]

切片 - 給出指定索引中的字符串值,它是原字符串的子串。

a[1] 結果爲 e

[:]

範圍切片 - 給出給定範圍內的子字符串

a[1:4] 結果爲 ell

in

成員關係 - 如果給定字符串中存在指定的字符,則返回true

'H' in a 結果爲 1

not in

成員關係 - 如果給定字符串中不存在指定的字符,則返回true

'Y' not in a 結果爲 1

r/R

原始字符串 - 抑制轉義字符的實際含義。原始字符串的語法與正常字符串的格式完全相同,除了原始字符串運算符在引號之前加上字母「r」。 「r」可以是小寫(r)或大寫(R),並且必須緊靠在第一個引號之前。

print(r'\n') 將打印 \n ,或者 print(R'\n') 將打印 \n,要注意的是如果不加rR作爲前綴,打印的結果就是一個換行。

%

格式 - 執行字符串格式化

請參見本文第5節

5.字符串格式化運算符

Python最酷的功能之一是字符串格式運算符。 這個操作符對於字符串是獨一無二的,彌補了C語言中 printf()系列函數。 以下是一個簡單的例子 -

#!/usr/bin/python3

print ("My name is %s and weight is %d kg!" % ('Maxsu', 71))

當執行上述代碼時,會產生以下結果 -

My name is Maxsu and weight is 71 kg!

以下是可以與%符號一起使用的完整符號集列表 -

編號

格式化符號

轉換

1

%c

字符

2

%s

在格式化之前通過str()函數轉換字符串

3

%i

帶符號的十進制整數

4

%d

帶符號的十進制整數

5

%u

無符號十進制整數

6

%o

八進制整數

7

%x

十六進制整數(小寫字母)

8

%X

十六進制整數(大寫字母)

9

%e

指數符號(小寫字母’e‘)

10

%E

指數符號(大寫字母’E

11

%f

浮點實數

12

%g

%f%e

13

%G

%f%E

其他支持的符號和功能如下表所列 -

編號

符號

功能

1

*

參數指定寬度或精度

2

-

左對齊

3

+

顯示標誌或符號

4

<sp>

在正數之前留空格

5

#

根據是否使用「x」或「X」,添加八進制前導零(‘0‘)或十六進制前導’0x‘或’0X‘。

6

0

使用零作爲左邊墊符(而不是空格)

7

%

%%‘留下一個文字「%

8

(var)

映射變量(字典參數)

9

m.n.

m是最小總寬度,n是小數點後顯示的位數(如果應用)

6.三重引號

Python中的三重引號允許字符串跨越多行,包括逐字記錄的新一行,TAB和任何其他特殊字符。

三重引號的語法由三個連續的單引號或雙引號組成。

#!/usr/bin/python3

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print (para_str)

當執行上述代碼時,會產生以下結果。注意每個單獨的特殊字符如何被轉換成其打印形式,它是直到最後一個NEWLINEs在「up」之間的字符串的末尾,並關閉三重引號。 另請注意,NEWLINEs可能會在一行或其轉義碼(\n)的末尾顯式顯示回車符 -

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

原始字符串根本不將反斜槓視爲特殊字符。放入原始字符串的每個字符都保持所寫的方式 -

#!/usr/bin/python3

print ('C:\\nowhere')

當執行上述代碼時,會產生以下結果 -

C:\nowhere

現在演示如何使用原始的字符串。將表達式修改爲如下 -

#!/usr/bin/python3

print (r'C:\\nowhere')

當執行上述代碼時,會產生以下結果 -

C:\\nowhere

7.Unicode字符串

Python 3中,所有的字符串都用Unicode表示。在Python 2內部存儲爲8位ASCII,因此需要附加’u‘使其成爲Unicode,而現在不再需要了。

內置字符串方法

Python包括以下內置方法來操作字符串 -

編號

方法

說明

1

capitalize()

把字符串的第一個字母轉爲大寫

2

center(width, fillchar)

返回使用fillchar填充的字符串,原始字符串以總共width列爲中心。

3

count(str, beg = 0,end = len(string))

計算字符串中出現有多少次str或字符串的子字符串(如果開始索引beg和結束索引end,則在beg~`end`範圍匹配)。

4

decode(encoding = ‘UTF-8’,errors = ‘strict’)

使用編碼encoding解碼該字符串。 編碼默認爲默認字符串encoding

5

encode(encoding = ‘UTF-8’,errors = ‘strict’)

返回字符串的編碼字符串版本; 在錯誤的情況下,默認是拋出ValueError,除非使用’ignore‘或’replace‘給出錯誤。

6

endswith(suffix, beg = 0, end = len(string))

確定字符串或字符串的子字符串(如果啓動索引結束和結束索引結束)都以後綴結尾; 如果是則返回true,否則返回false

7

expandtabs(tabsize = 8)

將字符串中的製表符擴展到多個空格; 如果沒有提供tabize,則默認爲每個製表符爲8個空格。

8

find(str, beg = 0 end = len(string))

如果索引beg和結束索引end給定,則確定str是否在字符串或字符串的子字符串中,如果找到則返回索引,否則爲-1

9

index(str, beg = 0, end = len(string))

find()相同,但如果沒有找到str,則引發異常。

10

isalnum()

如果字符串至少包含1個字符,並且所有字符均爲數字,則返回true,否則返回false

11

isalpha()

如果字符串至少包含1個字符,並且所有字符均爲字母,則返回true,否則返回false

12

isdigit()

如果字符串只包含數字則返回true,否則返回false

13

islower()

如果字符串至少包含1個字母,並且所有字符均爲小寫,則返回true,否則返回false

14

isnumeric()

如果unicode字符串只包含數字字符,則返回true,否則返回false

15

isspace()

如果字符串只包含空格字符,則返回true,否則返回false

16

istitle()

如果字符串正確「標題大小寫」,則返回true,否則返回false

17

isupper()

如果字符串至少包含一個可變大小寫字符,並且所有可變大小寫字符均爲大寫,則返回true,否則返回false

18

join(seq)

將序列seq中的元素以字符串表示合併(併入)到具有分隔符字符串的字符串中。

19

len(string)

返回字符串的長度

20

ljust(width[, fillchar])

返回一個空格填充的字符串,原始字符串左對齊到總共width列。

21

lower()

將字符串中的所有大寫字母轉換爲小寫。

22

lstrip()

刪除字符串中的所有前導空格

23

maketrans()

返回在translate函數中使用的轉換表。

24

max(str)

從字符串str返回最大字母字符。

27

replace(old, new [, max])

如果給定max值,則用new或最多最大出現替換字符串中所有出現的舊字符(old)。

28

rindex( str, beg = 0, end = len(string))

index()相同,但在字符串中向後搜索。

29

rjust(width,[, fillchar])

返回一個空格填充字符串,原始字符串右對齊到總共寬度(width)列。

30

rstrip()

刪除字符串的所有尾隨空格。

31

split(str=

根據分隔符str(空格,如果沒有提供)拆分字符串並返回子字符串列表; 如果給定,最多分割爲num子串。

32

splitlines( num=string.count(‘\n’)))」)

全部拆分字符串(或num)新行符,並返回每行的列表,並刪除新行符。

33

startswith(str, beg=0,end=len(string))

確定字符串或字符串的子字符串(如果給定起始索引beg和結束索引end)以str開頭; 如果是則返回true,否則返回false

34

strip([chars])

對字符串執行lstrip()rstrip()

35

swapcase()

反轉在字符串中的所有字母大小寫,即小寫轉大寫,大寫轉小寫。

36

title()

返回字符串的標題版本,即所有單詞第一個字母都以大寫開頭,其餘的都是小寫的。

37

translate(table, deletechars=

根據轉換表STR(256個字符),除去那些在del字符串轉換字符串。

38

upper()

將字符串中的小寫字母轉換爲大寫。

39

zfill(width)

返回原始字符串,左邊填充爲零,總共有寬度(width)字符; 對於數字zfill()保留給定的任何符號(少於一個零)。

40

isdecimal()

如果unicode字符串只包含十進制字符,則返回true,否則返回false