3.1 字串的運算
在Python中,針對兩個字串進行+與*,分別代表字串相接與字串重複的功能,我們用以下用兩個例子進行說明:
程式碼
#字串相接
str1="abc"
str2="123"
print("str1與str2相接結果:",str1+str2)
Python畫面
程式碼
#字串重複
print("字串@重複10次:","@"*10)
Python畫面
程式碼
#字串與數字相接
older=33
print("我今年"+older+"歲")
#<--錯誤寫法
print("我今年"+str(older)+"歲") #<--正確寫法
Python畫面
在第3個範例中顯示了字串與數字相接的方式,因為資料型態不同,直接用+運算會出現程式執行錯誤。解決方式是將數字轉換成字串,此時會用到str()函數,此函數可以將數值資料型態的變數轉換成字串,故str(older)會將數字33轉換成字串33,也就是"33"。此時"我今年"+str(older)+"歲"的語法就不會出現錯誤了。這個是初學者常常會忽略的地方,需要特別注意。
<補充>:資料型態轉換函數
3.2 字串中是否含有特定字串的判定
我們常常需要置到一個字串中是否有出現或沒有出現某一個字串,此時會用到in與not in的語法來判定,結果會是一個布林值。我們用以下例子說明:
程式碼
#字串中是否含有特定字串的判定
sentences="An apple a day, keep doctor
away."
print("apple是否在句子中:","apple"
in sentences)
print("orange是否在句子中:","orange" in sentences)
Python畫面
3.3 字串相關函數
我們在進行資料分析時常常需要進行資料清洗,此時針對字串的部分就需要依靠許多相關函數將字串中不必要的符號移除或修改,以下列出常用的字串函數並說明每一個的使用方式。
程式碼
#大小寫轉換
str1="hello, how are you?"
print("str1 轉大寫:",str1.upper())
print("str1 轉小寫:",str1.lower())
print("str1 字串中第一個字母轉大寫:",str1.capitalize())
print("str1 字串中每一個詞的第一個字母轉大寫:",str1.title())
print("str1 字母都是大寫嗎?", str1.isupper())
print("str1 字母都是小寫嗎?", str1.islower())
Python畫面
程式碼
#判斷字串開頭與結尾
str2="@123abc*"
print("str2 開頭是否為@?",str2.startswith("@"))
print("str2 開頭是否為*?",str2.startswith("*"))
print("str2 結尾是否為@?",str2.endswith("@"))
print("str2 結尾是否為*?",str2.endswith("*"))
Python畫面
程式碼
#移除字元
str3="@123abc***"
str4="--123abc--------"
print("移除str3左邊@:",str3.lstrip("@"))
print("移除str3右邊*:",str3.rstrip("*"))
print("移除str4左邊-:",str4.lstrip("-"))
print("移除str4右邊-:",str4.rstrip("-"))
print("移除str4兩端-:",str4.strip("-"))
Python畫面
程式碼
#字串對齊
str5="Hello, welcome to python world!"
print("置中對齊,長度60,長度不足左右以=符號補齊")
print(str5.center(60,"="))
print("靠左對齊,長度60,長度不足右邊以=符號補齊")
print(str5.ljust(60,"="))
print("靠右對齊,長度60,長度不足左邊以=符號補齊")
print(str5.rjust(60,"="))
Python畫面
程式碼
#字元替換
str6="a,b,c,d,e"
print("將str6中的\",\"替換成\"-\":",str6.replace(",",
"-"))
print("將str6中的\",\"移除:",str6.replace(",", ""))
Python畫面
程式碼
#字串分割
str7="Three competing store owners
rented adjoining shops in a mall."
str7=str7.replace(".",
"")
print("str7句子中出現了以下單字:",str7.split(" "))
Python畫面
此例子值得好好說明一下,我們的目的是要將一段句子中的英文單字擷取出來,但在一段句子中可能會出現標點符號,譬如, 或 .,此時在擷取單字之前不需先將此句子中的標點符號移除,我們這邊用replace()函數將句尾的句號移除,移除後的字串在重新指定回相同的變數str7,此時str7就更新為沒有句號的句子,此時我們用split()函數以空格" "做為切割點進行切割,即可將所有出現的單字擷取出來。split()函數回傳的結構為列表(list)資料型態,此資料型態的操作後續會介紹。
程式碼
#計算特定字串出現的次數
str8="aaa-bb-c"
print("str8句子中a出現次數:",str8.count("a"))
print("str8句子中b出現次數:",str8.count("b"))
print("str8句子中c出現次數:",str8.count("c"))
print("str8句子中-出現次數:",str8.count("-"))
print("str8句子中@出現次數:",str8.count("@"))
Python畫面
程式碼
#字串長度、擷取特定位置字串、特定字串出現的位置
str9="a123456@yahoo.com.tw"
print("str9字串長度為:",len(str9))
print("str9中@的位置位於:",str9.find("@"))
print("str9第一個字元為:",str9[0])
print("str9第一個字元為:",str9[0:1])
print("str9前兩個字元為:",str9[0:2])
print("str9前三個字元為:",str9[0:3])
print("str9中第5個位置之後的字串:",str9[4:])
print("str9倒數第一個字元:",str9[-1])
print("str9倒數第二個字元:",str9[-2])
print("str9中倒數第5個位置之後的字串:",str9[-5:])
print("E-mail帳號為:",str9[0:str9.find("@")])
print("E-mail種類為:",str9[str9.find("@")+1:])
Python畫面
程式碼
#字串連接
pathlist=["C:","doc1","doc2","file.txt"]
fullpath="/".join(pathlist)
print("資料路徑:{}".format(fullpath))
Python畫面
3.4 字串格式化
字串格式化的方法可以用來排版字串列印結果,使列印出來的結果更為乾淨整齊,使讀者一目了然。以下先說明基本的語法與功能,並舉例說明。
基本語法:字串.format(變數1, 變數2, 變數3,…)
表格中的s代表字串; d代表整數; f代表浮點數。
程式碼
#字串格式化輸出
name="Andy"
math_s=25.8
english_s=100
ave=(math_s+english_s)/2
print("未使用字串格式化".center(30,"="))
print("姓名","數學成績","英文成績","平均")
print(name,math_s,english_s,ave)
print("使用字串格式化".center(30,"="))
print("{:4s}{:6s}{:6s}{:4s}".format("姓名","數學成績","英文成績","平均"))
Python畫面
從上面範例中,可以看的字串格式化的結構中,字串中的{}數量與format()內的變數是一對一對應的且可在{}中設定呈現的方式,藉此帶來更清楚的呈現結果。另外,字串格式化的好處是,因為format()中是擺放變數,故變數值更新的時候,呈現結果也會直接更新,這個好處在結合for或while迴圈時,可達到一行print()程式但可以呈現多行結果,稍後介紹for與while迴圈時會加以說明。
留言
張貼留言