位置:首頁 > 腳本語言 > Python基礎教程 > Python字符串

Python字符串

字符串類型在Python中是最流行的。可以通過在引號包圍的字符簡單地創建它們。Python使用單引號和雙引號來表示字符串是一樣的。

創建字符串很簡單,隻要將值分配給一個變量。例如:

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

訪問字符串值:

Python不支持字符類型;這些都被視為一個長度的字符串,因此也被認為是一個子串。

要訪問子字符串,用方括號隨著指數或索引來獲得子切片。下麵是一個簡單的例子:

#!/usr/bin/python

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

更新字符串:

可以在“更新”現有的由(重新)分配一個變量賦值給另一個字符串的字符串。新的值可以與它以前的值或一個串完全不同。下麵是一個簡單的例子:

#!/usr/bin/python

var1 = 'Hello World!'

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

當執行上麵的代碼中,產生以下結果:

Updated String :-  Hello Python

轉義字符:

下表是未轉義非打印字符的列表,可以用反斜線符號來表示。

轉義字符被解釋;在一個單引號和雙引號字符串。

反斜線 
符號
十六進製
字符
描述
a 0x07 鈴聲或警報
 0x08 退格鍵
cx   Control-x
C-x   Control-x
e 0x1b 轉義
f 0x0c 換頁
M-C-x   Meta-Control-x
0x0a 新一行
nn   八進製表示法,其中n的範圍為0.7
0x0d 回車
s 0x20 空格
0x09 Tab鍵
v 0x0b 垂直製表
x   字符x
xnn   十六進製表示法,其中n的範圍是從0.9,a.f,或AF

字符串特殊操作符:

假設字符串變量中保存'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 M not in a 結果值為 1
r/R 原始字符串- 禁止轉義字符的實際意義。語法原始字符串是完全一樣的普通字符串,除了原始的字符串運算符,字母“r”,這之前的引號。在“r”可以小寫(r)或大寫字母(R)的,必須立即放置在第一引號前麵。 print r' ' 打印 並且 print R' ' 打印 
% 格式 - 執行字符串格式化 請參閱下一節

字符串格式化操作:

Python最酷的功能是字符串格式運算符%。這種操作是唯一的字符串,彌補了C語言的printf()係列函數功能。下麵是一個簡單的例子:

#!/usr/bin/python

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

當執行上麵的代碼中,產生以下結果:

My name is Zara and weight is 21 kg!

下麵是完整的,它可以與%符號使用列表:

格式符號 轉換
%c 字符
%s 通過str() 字符串轉換來格式化
%i 有符號十進製整數
%d 有符號十進製整數
%u 無符號十進製整數
%o 八進製整數
%x 十六進製整數(小寫字母)
%X 十六進製整數(大寫字母)
%e 索引符號(小寫'e')
%E 索引符號(大寫“E”)
%f 浮點實數
%g %f和%e 的簡寫
%G %f和%E的簡寫

其他支持的符號和功能如下表:

符號 功能
* 參數指定寬度和精度
- 左對齊
+ 顯示符號
<sp> 一個正數前留一個空格
# 添加前導零('0')或十六進製前導0x“或”0X“,取決於”x“或”X“是否使用八進製。
0 從鍵盤左邊添加零(而不是空格)
% '%%'給留下一個文字'%'
(var) 映射變量(字典參數)
m.n. m是最小的總寬度和n是數字,顯示小數點後的位數(如果appl)

三重引號:

Python三重引號允許字符串跨越多行,包括逐字換行符,製表符和其他特殊字符。

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

#!/usr/bin/python

para_str = """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.
"""
print para_str;

當執行上麵的代碼中,產生以下結果。請注意如何每一個特殊字符被轉換到打印形式,一直到最後的換行符之間的字符串“up”結束閉三重引號。還要注意的是發生或者使用顯式回車在一行或它的轉義代碼( 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/python

print 'C:\nowhere'

當執行上麵的代碼中,產生以下結果:

C:
owhere

現在利用原始的字符串。我們表達如下:

#!/usr/bin/python

print r'C:\nowhere'

當執行上麵的代碼中,產生以下結果:

C:\nowhere

Unicode字符串:

在Python普通字符串在內部存儲為8位ASCII,而Unicode字符串被作為16位Unicode存儲。這使得一組字符更加多樣化,包括大多數語言在世界上的特殊字符。限製處理Unicode字符串,注意以下幾點:

#!/usr/bin/python

print u'Hello, world!'

當執行上麵的代碼,產生以下結果:

Hello, world!

正如你所看到的,Unicode字符串使用前綴 u,就像原始字符串使用前綴 r

字符串內置方法:

Python的包括以下內建的方法操作字符串:

SN 方法及描述
1 capitalize()
字符串的第一個字母大寫
2 center(width, fillchar)
返回一個空格填充字符串為中心,以總寬度列的原始字符串
3 count(str, beg= 0,end=len(string))
開始索引beg和結束索引結束str多少次出現在字符串或字符串的子串
4 decode(encoding='UTF-8',errors='strict')
使用注冊編碼的編解碼器的字符串進行解碼。編碼默認為默認的字符串編碼。
5 encode(encoding='UTF-8',errors='strict')
返回編碼字符串的字符串版本;對錯誤,默認是引發ValueError除非錯誤被賦予了“ignore”或“replace”。
6 endswith(suffix, beg=0, end=len(string))
判斷字符串或字符串的一個子串(如果起始索引beg和給出end結束索引)與後綴結尾;如果是則返回true,否則為false,
7 expandtabs(tabsize=8)
擴展選項卡中的字符串多個空格;如果未提供tab大小默認為每片8位
8 find(str, beg=0 end=len(string))
確定str開始索引beg和end索引並返回索引,如果找到出現在字符串或字符串的子串,否則返回-1
9 index(str, beg=0, end=len(string))
與find()一樣,但會引發一個異常如果str冇找到
10 isalnum()
如果string至少有1個字符,所有字符為字母數字則返回true,否則為false
11 isalpha()
如果string至少有1個字符,所有字符都是字母,否則為false,則返回true
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])
返回一個空格填充字符串,原始字符串左對齊,以總寬列
21 lower()
將所有大寫字母的字符串轉化為小寫
22 lstrip()
刪除字符串中的所有前導空格
23 maketrans()
返回要用於轉換功能的轉換表
24 max(str)
從字符串str返回的最大字母字符
25 min(str)
從字符串str返回最小字母字符
26 replace(old, new [, max])
取代了舊的所有出現在字符串使用新的或max,如果給定max
27 rfind(str, beg=0,end=len(string))
與find()一樣,但反向搜索字符串
28 rindex( str, beg=0, end=len(string))
與index()一樣,但反向搜索字符串
29 rjust(width,[, fillchar])
返回一個空格填充字符串右對齊,以原始字符串總寬度列。
30 rstrip()
刪除字符串的所有行尾空白
31 split(str="", num=string.count(str))
根據分隔符str (如果冇有提供空間)和子字符串返回分割字符串列表;分成最多num子字符串。
32 splitlines( num=string.count(' '))
Splits string at all (or num) NEWLINEs and returns a list of each line with NEWLINEs removed
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)
返回leftpadded零合共寬字符原字符串;用於數字zfill()保留給予任何跡象(減去一個零)
40 isdecimal()
如果一個Unicode字符串隻包含十進製字符則返回true,否則返回false