PYTHON程式語言的學習-4

在這個講次當中我們學習如何使用字串(string)。

string-1影片連結


1. Python使用'(單引號)和"(雙引號)來表示字串。


一般地,如果字串中出現了雙引號,就使用單引號來表示字串;反之則使用雙引號。如果都沒有出現,就依個人喜好選擇。出現在字串中的\(反斜槓)被直譯為特殊字元,比如\n表示換行符。
a='Chen Lee Lin'
for i in a:
    print i
b=['Chen', 'Lee', 'Lin']
for i in b:
    print 'family name:',i
pre='family name is '
for i in b:
    print pre+i+'.'







string-2影片連結


2. 字串連結與複製


'''a='Hello'; b='Python'
+	字符串連接	a + b ='HelloPython'
*	重複輸出字符串	a * 2 ='HelloHello'
[]	通過索引獲取字符串中字符	a[1] ='e'
[ : ]	截取字符串中的一部分	a[1:4] ='ell'
in	成員運算符 - 如果字符串中包含給定的字符返回 True	"H" in a =True
not in	成員運算符 - 如果字符串中不包含給定的字符返回 True	"M" not in a =True
%	格式字符串	請看下一章節
'''
a='Hello'
a3=a*3       #將a的字串內容增大為3倍
print 'a=',a,'  a3=',a3

b='Python'
c=a+' '+b  #將a跟b的字串內容連結在一起並且中間用一個空格分開
print 'c=',c
print 'a[1:4]=',a[1:4]  #列印出a字串的第1到第4字串內容
print 'Physics'[2:6]      #列印出字串'Physics'的第2到第8字串內容
'''
#下面s5是錯誤的用法,
#s6在行末加上倒斜線就可以連接下一行,就是正確的用法。
s5='This is 
Tunhgai.'
print s5
'''
s6='This is \
Tunhgai.'
print s6
print 'in:','T' in s6
print 'not in:','b' not in s6
#利用格式化的方式列印出字串的內容
print "Name:%s, age:%d, weight:%f kg!" % ('Emily',19,51.2)
print "Name:%s, age:%d, weight:%.1f kg!" % ('Emily',19,51.2)
print "Name:%10s, age:%6d, weight:%8.1f kg!" % ('Emily',19,51.2)
print "Name:%10s, age:%6d, weight:%8.1f kg!" % ('Anna',21,45.25)
print "Name:%10s, age:%6d, weight:%8.1f kg!" % ('Christina',23,102)





3. 字串連結


prefix='py-'
for i in range(7,12):
    if(i < 10):
        b=prefix+'0'+str(i)
    else:
        b=prefix+str(i)
    print b
print ' ===== '

#請比較下面三個字串連結的方式所造成的差別
s1='This is \
python code \
for CP'
print 's1=',s1
s2="""This is
python code
for CP"""
print 's2=',s2
s3 = ('This is '
     'python code '
     'for CP')
print 's3=',s3


'


4.python的字符串內建函數


  • string.capitalize() 把字符串的第一個字符大寫
  • string.center(width) 返回一個原字符串居中,並使用空格填充至長度 width 的新字符串
  • string.count(str, beg=0, end=len(string)) 返回 str 在 string 裡面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數
  • string.decode(encoding='UTF-8', errors='strict') 以 encoding 指定的編碼格式解碼 string,如果出錯默認報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace'
  • string.encode(encoding='UTF-8', errors='strict') 以 encoding 指定的編碼格式編碼 string,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是'ignore'或者'replace'
  • string.endswith(obj, beg=0, end=len(string)) 檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.
  • string.expandtabs(tabsize=8) 把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8。 string.find(str, beg=0, end=len(string)) 檢測 str 是否包含在 string 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1
  • string.format() 格式化字符串
  • string.index(str, beg=0, end=len(string)) 跟find()方法一樣,只不過如果str不在 string中會報一個異常.
  • string.isalnum() 如果 string 至少有一個字符並且所有字符都是字母或數字則返 回 True,否則返回 False
  • string.isalpha() 如果 string 至少有一個字符並且所有字符都是字母則返回 True, 否則返回 False
  • string.isdecimal() 如果 string 只包含十進制數字則返回 True 否則返回 False.
  • string.isdigit() 如果 string 只包含數字則返回 True 否則返回 False.
  • string.islower() 如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False
  • string.isnumeric() 如果 string 中只包含數字字符,則返回 True,否則返回 False
  • string.isspace() 如果 string 中只包含空格,則返回 True,否則返回 False.
  • string.istitle() 如果 string 是標題化的(見 title())則返回 True,否則返回 False
  • string.isupper() 如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False
  • string.join(seq) 以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合併為一個新的字符串
  • string.ljust(width) 返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串
  • string.lower() 轉換 string 中所有大寫字符為小寫.
  • string.lstrip() 截掉 string 左邊的空格
  • string.maketrans(intab, outtab]) maketrans() 方法用於創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。
  • max(str) 返回字符串 str 中最大的字母。
  • min(str) 返回字符串 str 中最小的字母。
  • string.partition(str) 有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.
  • string.replace(str1, str2, num=string.count(str1)) 把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.
  • string.rfind(str, beg=0,end=len(string) ) 類似於 find()函數,不過是從右邊開始查找.
  • string.rindex( str, beg=0,end=len(string)) 類似於 index(),不過是從右邊開始.
  • string.rjust(width) 返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串
  • string.rpartition(str) 類似於 partition()函數,不過是從右邊開始查找.
  • string.rstrip() 刪除 string 字符串末尾的空格.
  • string.split(str="", num=string.count(str)) 以 str 為分隔符切片 string,如果 num有指定值,則僅分隔 num 個子字符串
  • string.splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。
  • string.startswith(obj, beg=0,end=len(string)) 檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查.
  • string.strip([obj]) 在 string 上執行 lstrip()和 rstrip()
  • string.swapcase() 翻轉 string 中的大小寫
  • string.title() 返回"標題化"的 string,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle())
  • string.translate(str, del="") 根據 str 給出的表(包含 256 個字符)轉換 string 的字符, 要過濾掉的字符放到 del 參數中
  • string.upper() 轉換 string 中的小寫字母為大寫
  • string.zfill(width) 返回長度為 width 的字符串,原字符串 string 右對齊,前面填充0
  • string.isdecimal() isdecimal()方法檢查字符串是否只包含十進制字符。這種方法只存在於unicode對象。

    s1="""你是東海大學應用物理系的學生。 你必須每天檢查
    你的tmail電子郵件信箱 。    你每天認真的
    工作就能得到好成績。"""
    print s1
    s2=s1.replace('\n','')
    print 's1-replace,type s2=',type(s2)
    print 's2=',s2
    s3=s2.split('。')
    print 's3 type=',type(s3),len(s3)
    s4=[]
    for i in range(len(s3)):
        print i,s3[i]
        if(len(s3[i]) < 2): break
        i1=s3[i].lstrip()
        i2=i1.rstrip()
        s4.append(i2)
        print i2+'。'
    #s4是一個列表,有3個元素,3個元素都是字串。
    #現在我們要再把這個列表轉換成為一個單一字串。
    #你應該用下面這個join的方法
    print type(s4),len(s4)
    for i in range(len(s4)): print s4[i]
    newstr='。'.join(s4)
    print 'newstr=',newstr
    





    5. 字串的應用1:編寫一個網頁原始碼-1


    string-html.py






    6. 字串的應用2:編寫一個網頁原始碼-2


    string-html-read.py



    py2.txt如下:

    chapter 01 迴圈與條件判斷
    1.1 迴圈(for)
    1.2 迴圈(while)
    1.3 條件判斷(if,else)
    chapter 02 比較與邏輯
    2.1 比較條件(==,>,<)
    2.2 邏輯條件(and,or)
    chapter 03 迴圈控制
    3.1 終止迴圈break
    3.2 該次迴圈略過continue
    3.3 不做任何事情(占位語句)pass
    chapter 04 檔案讀寫
    4.1 open for read
    4.2 write
    4.3 applications
    chapter 05 集合資料
    5.1 字串string
    5.2 列表list
    5.3 元組tuple
    chapter 06 函數副程式
    6.1 數學函數(math)
    6.2 亂數涵數(random)
    6.3 自訂副程式(def)