Python3 字串


字串是 Python 中最常用的資料型別。我們可以使用引號('或")來建立字串。

建立字串很簡單,只要為變數分配一個值即可。例如:

var1 = 'Hello World!'
var2 = "php"

Python 存取字符字串中的值

Python 不支援單字元類型,單字元也在Python也是作為一個字串使用。如下實例:

#!/usr/bin/python3

var1 = 'Hello World!'
var2 = "php"

print ("var1[0]: ", var1[0])
print ("var2[1:5]: ", var2[1:5])

以上實例執行結果:

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

Python字串更新

你可以對已存在的字串進行修改,並賦值給另一個變量,如下實例:

#!/usr/bin/python3

var1 = 'Hello World!'

print ("已更新字符串 : ", var1[:6] + 'php!')

以上實例執行結果

已更新字符串 :  Hello php!

Python轉義字元

在需要在字元中使用特殊字元時,python用反斜線(\)轉義字元。

##\(行尾時)

續行符號#\'\"\a\b#\e轉義空換行縱向製表符 橫向製表符回程換頁# \oyy\xyy\other

Python字串運算子

下表實例變數a值為字串"Hello",b變數值為"Python":

#\\反斜線符號
單引號
雙引號
響鈴
\e
\000
#\n
\v
#\t
\r
\f
八進位數,yy代表的字符,例如:\o12代表換行
十六進位數,yy代表的字符,例如:\x0a代表換行
其它的字元以普通格式輸出
##字串連線*#[]e[ : ] ell##in成員運算子- 如果字串中包含給定的字元傳回True 輸出結果1not in成員運算子- 如果字串中不包含給定的字元傳回True 輸出結果1 r/R原始字串- 原始字串:所有的字串都是直接按照字面的意思來使用,沒有轉義特殊或不能列印的字元。 原始字串除在字串的第一個引號前加上字母"r"(可以大小寫)以外,與普通字串有著幾乎完全相同的語法。 prints \n 和格式字串實例
#!/usr/bin/python3

a = "Hello"
b = "Python"

print("a + b 输出结果:", a + b)
print("a * 2 输出结果:", a * 2)
print("a[1] 输出结果:", a[1])
print("a[1:4] 输出结果:", a[1:4])

if( "H" in a) :
    print("H 在变量 a 中")
else :
	print("H 不在变量 a 中")

if( "M" not in a) :
    print("M 不在变量 a 中")
else :
	print("M 在变量 a 中")

print (r'\n')
print (R'\n')
以上實例輸出結果為:
運算子描述實例
#+##a + b輸出結果: HelloPython
重複輸出字串a*2 輸出結果:HelloHello
透過索引取得字串中字元a[1] 輸出結果
截取字串中的一部分a[1:4] 輸出結果
H in a
M not in a
print r'\n'print R'\n' prints \n##%
請看下一節內容。
a + b 输出结果: HelloPython
a * 2 输出结果: HelloHello
a[1] 输出结果: e
a[1:4] 输出结果: ell
H 在变量 a 中
M 不在变量 a 中
\n
\n

Python字串格式化

Python 支援格式化字串的輸出。儘管這樣可能會用到非常複雜的表達式,但最基本的用法是將一個值插入到一個有字串格式符 %s 的字串中。

在 Python 中,字串格式化使用與 C 中 sprintf 函數一樣的語法。

如下實例:

#!/usr/bin/python3

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

以上實例輸出結果:

我叫 小明 今年 10 岁!

python字串格式化符號:

<tbody

#
## 格式化無符號整數 格式化無符號八進制數 格式化無符號十六進位數# 格式化無符號十六進位數(大寫) 格式化浮點數數字,可指定小數點後的精確度      %e
    符號   編號說明
      %c 格式化字元及其ASCII碼
      %s 格式化字串
#      %d 格式化整數
      %u
#      %o
      %x
      %X
      %f
      %e
#      %e# 用科學計數法格式化浮點數
      %E 作用同%e,用科學數數法格式化浮點數
      %g############ %f和%e的簡稱# #################      %G#### %f 和%E 的簡寫
      %p# 用十六進制數格式化變數的位址

格式化運算子輔助指令:

##(var)映射變數(字典參數)m.n.#m 是顯示的最小總寬度,n 是小數點後的位數(如果可用的話)

Python三引號

python三引號允許一個字串跨多行,字串中可以包含換行符號、製表符以及其他特殊字元。實例如下

#!/usr/bin/python3

para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)

以上實例執行結果為:

这是一个多行字符串的实例
多行字符串可以使用制表符
TAB (    )。
也可以使用换行符 [ 
 ]。

三引號讓程式設計師從引號和特殊字串的泥潭裡面解脫出來,自始至終保持一小塊字串的格式是所謂的WYSIWYG(所見即所得)格式的。

一個典型的用例是,當你需要一塊HTML或SQL時,這時用字串組合,特殊字串轉義將會非常的繁瑣。

errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')

Unicode 字串

在Python2中,普通字串是以8位ASCII碼進行儲存的,而Unicode字串則儲存為16位元unicode字串,這樣能夠表示更多的字符集。使用的語法是在字串前面加上前綴 u

在Python3中,所有的字串都是Unicode字串。


Python 的字串內建函數

Python 的字串常用內建函數如下:


符號功能
*定義寬度或小數點精確度
-用做左對齊
+在正數前面顯示加號( + )
<sp>在正數前面顯示空格
#在八進制數前面顯示零('0'),在十六進位前面顯示' 0x'或'0X'(取決於用的是'x'還是'X')
#0顯示的數字前面填入'0'而不是默認的空格
%'%%'輸出單一的'%'
##序號方法及描述123#45678##9index(str, beg=0, end=len(string))10isalnum()11isalpha()16171819202122##23maketrans()24max(str)25min(str)26replace(old, new [, max])27rfind(str, beg=0,end=len(string))28rindex( str, beg=0, end=len(string))29#rjust(width,[, fillchar])303132
依照行分隔,傳回一個包含各行為元素的列表,如果num 指定則僅切片num 個行.
capitalize()

將字串的第一個字元轉換為大寫

#center(width, fillchar)

#傳回一個指定的寬度width 居中的字串,fillchar 為填滿的字符,預設為空格。
count(str, beg= 0,end=len(string))

傳回str 在string 裡面出現的次數,如果beg 或end 指定則傳回指定範圍內str 出現的次數
decode(encoding='UTF-8',errors= 'strict')

使用指定編碼來解碼字串。預設編碼為字串編碼。
encode(encoding='UTF-8',errors='strict')

以encoding 指定的編碼格式編碼字串,如果出錯預設報一個ValueError 的異常,除非errors 指定的是'ignore'或'replace'
endswith(suffix , beg=0, end=len(string))

檢查字串是否以obj 結束,如果beg 或end 指定則檢查指定的範圍內是否以obj 結束,如果是,返回True,否則返回False.

expandtabs(tabsize=8)

#將字串string 中的tab 符號轉為空格,tab 符號預設的空格數是8 。
find(str, beg=0 end=len(string))

偵測str 是否包含在字串中中,如果beg 和end 指定範圍,則檢查是否包含在指定範圍內,如果是傳回開始的索引值,否則傳回-1

跟find()方法一樣,只不過如果str不在字串中會報一個異常.


如果字串至少有一個字元並且所有字元都是字母或數字則返 回 True,否則回傳 False



如果字串至少有一個字元且所有字元都是字母則傳回 True, 否則回傳False
12

isdigit()


如果字串只包含數字則傳回True 否則傳回False..
13

islower()


#如果字串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字元都是小寫,則傳回True,否則傳回False
14

isnumeric()


如果字串中只包含數字字符,則傳回True,否則傳回False
15

#isspace()

##如果字串中只包含空格,則傳回True,否則回傳False.
#istitle()

如果字串是標題化的(見title() )則傳回True,否則傳回False
#isupper()

如果字串中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回True,否則返回False
join(seq)

以指定字串作為分隔符,將seq 中所有的元素(的字串表示)合併為一個新的字串
#len(string)

傳回字串長度
ljust(width[, fillchar])

傳回一個原始字串左對齊,並使用fillchar 填入長度width 的新字串,fillchar 預設為空格。
#lower()

#轉換字串中所有大寫字元為小寫.
lstrip()

移除字串左邊的空格

建立字元對映的轉換表,對於接受兩個參數的最簡單的呼叫方式,第一個參數是字串,表示需要轉換的字符,第二個參數也是字串表示轉換的目標。


#傳回字串 str 中最大的字母。


傳回字串 str 中最小的字母。


把字串中的str1 替換成str2,如果max 指定,則替換不超過max 次。


類似於find()函數,不過是從右邊開始找.


#類似index(),不過是從右邊開始.


返回一個原始字串右對齊,並使用fillchar(預設空格)填入長度width 的新字串


##rstrip() 刪除字串字串結尾的空格.


#split(str="", num=string.count(str)) num=string.count(str)) 以str 為分隔符號截取字串,如果num 有指定值,則只截取num 個子字串


splitlines( num=string. count('\n'))
33

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


檢查字串是否是以obj 開頭,是則傳回True,否則傳回False。如果beg 和 end 指定值,則在指定範圍內檢查。
34

strip([chars])


在字串上執行lstrip()和rstrip()
#35

swapcase()


#將字串中大寫轉換為小寫,小寫轉換為大寫
36

title()


返回"標題化"的字串,就是說所有單字都是以大寫開​​始,其餘字母均為小寫(見istitle() )
37

translate(table, deletechars="")


根據str 給出的表(包含256 個字元)轉換string 的字元, 要過濾掉的字元放到deletechars 參數中
38

upper()


轉換字串中的小寫字母為大寫
39

zfill (width)


傳回長度為width 的字串,原始字串右對齊,前面填入0
40

isdecimal()


檢查字串是否只包含十進位字符,如果是傳回true,否則傳回false。
#