Python 提供豐富的字串處理方法,能有效處理文字資料。本文涵蓋字串格式化、分割、搜尋、大小寫轉換、清除多餘字元等技巧,並以計算字母出現次數、修改大小寫、取得指定位置字元、移除指定字母、計算母音次數、將母音轉換為大寫以及十六進位轉二進位等實際案例,輔以程式碼範例及解析,幫助讀者深入理解並應用於日常開發。從基礎的 split()、replace() 到進階的字典推導式應用,本文提供全面的字串操作,讓開發者能更有效率地處理字串相關問題。
Python 字串處理方法詳解
Python 的字串處理功能非常強大,提供了多種方法來操作和轉換字串。在本章中,我們將探討 Python 中字串的各種處理方法,包括格式化、分割、測試、搜尋和轉換等。
7.8.2 字串格式化
Python 中的字串格式化可以透過 .format() 方法實作。該方法允許我們將變數插入到字串中指定的位置。
使用位置引數
.format() 方法接受零個或多個位置引數 P_i,後面跟著零個或多個關鍵字引數 K_i=V_i。
>>> '{} plus {} equals {}'.format(4, 5, 'Nine')
'4 plus 5 equals Nine'
在這個例子中,.format() 方法被呼叫在字串常值上,引數為 4、5 和 'Nine'。空的 {} 將被引數依序取代。
使用索引
我們也可以在 {} 中指定引數的位置。
>>> "My Name is {0} and I am from {1}".format("Milinda", "USA")
'My Name is Milinda and I am from USA'
在這個例子中,.format() 方法包含兩個引數,分別是 "Milinda" 和 "USA"。{0} 和 {1} 分別對應第一個和第二個引數。
使用關鍵字引數
我們也可以在 {} 中使用關鍵字引數。
>>> "I am {0} years old. I Love to work on {PC} Laptop".format(25, PC="APPLE")
'I am 25 years old. I Love to work on APPLE Laptop'
程式碼解密:
.format()方法允許我們將變數插入到字串中。- 位置引數依照順序替換
{}。 - 可以使用索引指定引數的位置。
- 關鍵字引數可以用於替換對應的
{}。
7.8.3 分割字串
split() 方法用於將字串分割成較小的字串,傳回一個列表。
基本用法
>>> Str1 = "C C++ JAVA Python"
>>> Str1.split()
['C', 'C++', 'JAVA', 'Python']
在這個例子中,split() 方法將 Str1 分割成單獨的字串,並傳回一個列表。
自定義分隔符
>>> TOP_10_Company = "TCS,INFOSYS,GOOGLE,MICROSOFT,YAHOO"
>>> Company = TOP_10_Company.split(",")
>>> print(Company)
['TCS', 'INFOSYS', 'GOOGLE', 'MICROSOFT', 'YAHOO']
>>> for c in Company:
... print(c)
TCS
INFOSYS
GOOGLE
MICROSOFT
YAHOO
在這個例子中,我們使用 "," 作為分隔符,將 TOP_10_Company 分割成單獨的公司名稱。
程式碼解密:
split()方法用於將字串分割成列表。- 可以自定義分隔符,若未指定,則預設使用空格作為分隔符。
- 分割後的列表可以進行遍歷操作。
7.8.4 測試字串
Python 提供了多種方法來測試字串的內容,例如是否為數字、字母或兩者的組合。
測試方法一覽
| 方法 | 說明 |
|---|---|
isalnum() | 若字串中所有字元都是字母或數字,則傳回 True。 |
isalpha() | 若字串中所有字元都是字母,則傳回 True。 |
isdigit() | 若字串中所有字元都是數字,則傳回 True。 |
islower() | 若字串中所有字元都是小寫字母,則傳回 True。 |
isupper() | 若字串中所有字元都是大寫字母,則傳回 True。 |
isspace() | 若字串中所有字元都是空白字元,則傳回 True。 |
範例
>>> S = "Python Programming"
>>> S.isalnum()
False
>>> S = "Python"
>>> S.isalnum()
True
>>> P = "1Jhon"
>>> P.isalnum()
True
程式碼解密:
- 這些方法用於測試字串的內容。
- 每種方法都有特定的用途,例如測試是否為數字或字母。
- 傳回值為
True或False,便於進行條件判斷。
7.8.5 搜尋子字串
Python 提供了多種方法來搜尋子字串,例如檢查是否以特定子字串開始或結束。
搜尋方法一覽
| 方法 | 說明 |
|---|---|
endswith(Str1) | 若字串以 Str1 結尾,則傳回 True。 |
startswith(Str1) | 若字串以 Str1 開始,則傳回 True。 |
find(Str1) | 傳回 Str1 在字串中的最低索引,若未找到則傳回 -1。 |
rfind(Str1) | 傳回 Str1 在字串中的最高索引,若未找到則傳回 -1。 |
count(S1) | 傳回 S1 在字串中出現的次數。 |
範例
>>> Str1 = "Python Programming"
>>> Str1.endswith("Programming")
True
>>> Str1.startswith("Python")
True
>>> Str1.find("Prog")
7
>>> Str1.rfind("o")
9
>>> Str1.count("o")
3
程式碼解密:
- 這些方法用於搜尋子字串。
- 可以檢查字串是否以特定子字串開始或結束。
- 可以找到子字串在字串中的索引或出現次數。
7.8.6 轉換字串
Python 提供了多種方法來轉換字串,例如轉換為大寫或小寫。
轉換方法一覽
| 方法 | 說明 |
|---|---|
upper() | 將字串轉換為大寫。 |
lower() | 將字串轉換為小寫。 |
範例
>>> S = "Hello World"
>>> S.upper()
'HELLO WORLD'
>>> S.lower()
'hello world'
程式碼解密:
- 這些方法用於轉換字串的大小寫。
- 可以將字串轉換為大寫或小寫,以滿足不同的需求。
Python 字串處理詳解:轉換、清除與格式化
Python 中的字串處理功能非常強大,提供了多種方法來轉換、清除和格式化字串。這些功能在日常程式設計中非常實用,可以幫助開發者更有效地處理文字資料。
7.8.6 字串轉換方法
Python 的 str 類別提供了多種方法來轉換字串的大小寫和其他形式。以下是一些常用的方法:
1. str.capitalize()
將字串的第一個字母轉換為大寫。
Str1 = "hello"
print(Str1.capitalize()) # 輸出:Hello
2. str.lower()
將字串中的所有字母轉換為小寫。
Str1 = "INDIA"
print(Str1.lower()) # 輸出:india
3. str.upper()
將字串中的所有字母轉換為大寫。
Str1 = "iitbombay"
print(Str1.upper()) # 輸出:IITBOMBAY
4. str.title()
將字串中每個單字的第一個字母轉換為大寫。
Str1 = "welcome to the world of programming"
print(Str1.title()) # 輸出:Welcome To The World Of Programming
5. str.swapcase()
將字串中的大寫字母轉換為小寫,小寫字母轉換為大寫。
Str1 = "IncreDible India"
print(Str1.swapcase()) # 輸出:iNCREdIBLE iNDIA
6. str.replace(old, new [, count])
將字串中的舊字串替換為新字串。
S1 = "I have brought two chocolates, two cookies and two cakes"
S2 = S1.replace("two", "three")
print(S2) # 輸出:I have brought three chocolates, three cookies and three cakes
若要限制替換次數,可以使用第三個引數 count。
S1 = "I have brought two chocolates, two cookies and two cakes"
print(S1.replace("two", "three", 2)) # 輸出:I have brought three chocolates, three cookies and two cakes
7.8.7 清除字串中的多餘字元
在處理文字時,經常需要清除字串開頭或結尾的多餘字元,如空白字元。Python 提供了以下方法來實作這一點:
1. str.lstrip()
清除字串左邊的空白字元。
Scentence1 = " Hey Cool!!."
print(Scentence1.lstrip()) # 輸出:Hey Cool!!.
2. str.rstrip()
清除字串右邊的空白字元。
Scentence1 = "Welcome!!!\n\n\ "
print(Scentence1.rstrip()) # 輸出:Welcome!!!
3. str.strip()
清除字串左右兩邊的空白字元。
Str1 = " Hey,How are you!!!\t\t\t "
print(Str1.strip()) # 輸出:Hey,How are you!!!
也可以用來清除指定的字元。
s1 = "@Cost Prize of Apple Laptop is at Rs = 20 Dollars $$$$"
print(s1.strip('@$')) # 輸出:Cost Prize of Apple Laptop is at Rs = 20 Dollars
7.8.8 字串格式化
Python 提供了多種方法來格式化字串,使其符合特定的寬度和對齊方式。
1. str.center(width)
將字串置中於指定寬度內。
S1 = "APPLE MACOS"
print(S1.center(15)) # 輸出: APPLE MACOS
2. str.ljust(width)
將字串靠左對齊於指定寬度內。
S1 = "APPLE MACOS"
print(S1.ljust(15)) # 輸出:APPLE MACOS
3. str.rjust(width)
將字串靠右對齊於指定寬度內。
S1 = "APPLE MACOS"
print(S1.rjust(15)) # 輸出: APPLE MACOS
範例程式
以下是兩個簡單的範例程式,展示如何計算特定字母在字串中出現的次數。
程式 7.6:計算 ‘b’ 在字串中出現的次數
def countB(word):
count = 0
for b in word:
if b == 'b':
count += 1
return count
print("Number of 'b' =", countB("abbbabbaaa"))
輸出:
Number of 'b' = 5
程式 7.7:計算指定字母在字串中出現的次數
def count_Letter(word, letter):
count = 0
for i in word:
if i == letter:
count += 1
print("Number of occurrences of '{}' is {}".format(letter, count))
count_Letter("abbbabbaaa", 'b')
輸出:
Number of occurrences of 'b' is 5
這些範例展示了 Python 在字串處理方面的靈活性和強大功能,能夠滿足各種不同的需求。
Python 字串操作與問題解決
在程式設計中,字串操作是非常重要的一環。Python 提供了豐富的字串操作方法,能夠有效地處理字串相關的問題。本篇文章將介紹 Python 中字串操作的各種技巧,並透過範例程式碼來展示其應用。
計算字母出現次數
函式實作
def count_letter(word, letter):
count = 0
for i in word:
if i == letter:
count += 1
return count
x = count_letter('INIDA', 'I')
print(x)
程式解析
此函式 count_letter 接受兩個引數:word 和 letter。它遍歷 word 中的每個字元,如果遇到與 letter 相符的字元,則計數器 count 加一。最後傳回計數結果。
修改字串大小寫
函式實作
def modify_case(word):
print("原始字串 =", word)
print("轉換大小寫後 =", end="")
return word.swapcase()
print(modify_case("hi Python is interesting, isn't it ? "))
程式解析
此函式 modify_case 使用 Python 的內建方法 swapcase() 來轉換字串中所有字母的大小寫。
取得指定位置的字元
函式實作
def get_char(word, pos):
print("字串 =", word)
print("位置", pos, "的字元 =", end="")
counter = 0
for i in word:
counter += 1
if counter == pos:
return i
print(get_char("Addicted to Python ", 3))
程式解析
此函式 get_char 遍歷輸入的 word,直到找到指定位置 pos 的字元並傳回。
移除指定字母
函式實作
def eliminate_letter(word, letter):
print("原始字串 =", word)
print("移除字母後:", letter)
print("結果 =", end="")
new_str = word.replace(letter, "")
return new_str
x = eliminate_letter('PYTHON PROGRAMMING', 'P')
print(x)
程式解析
此函式 eliminate_letter 使用 replace() 方法移除 word 中所有出現的 letter。
計算母音出現次數
函式實作
def count_vowels(word):
print("字串 =", word)
word = word.lower()
return {v: word.count(v) for v in 'aeiou'}
print(count_vowels("I Love Python Programming"))
程式解析
此函式 count_vowels 將輸入字串轉換為小寫,然後使用字典推導式計算每個母音的出現次數。
將母音轉換為大寫
函式實作
def upper_case_vowels(word):
new_word = ''
print("原始字串 =", word)
print("轉換母音為大寫後")
print("結果 =", end="")
for i in word:
if i in 'aeiou':
new_word += i.upper()
else:
new_word += i
return new_word
x = upper_case_vowels('aehsdfiou')
print(x)
程式解析
此函式 upper_case_vowels 遍歷輸入字串,如果遇到母音則將其轉換為大寫。
十六進位轉二進位
程式實作
def dec_bin(x):
k = []
n = x
while n > 0:
a = int(n % 2)
k.append(a)
n = (n - a) / 2
k.append(0)
string = ""
for j in k[::-1]:
string += str(j)
if len(string) > 4:
print(string[1:], end=' ')
elif len(string) > 3:
print(string, end=' ')
elif len(string) > 2:
print('0' + string, end=' ')
else:
print('00' + string, end=' ')
def hex_to_bin(h):
for ch in h:
if 'A' <= ch <= 'F':
dn = 10 + (ord(ch) - ord('A'))
dec_bin(dn)
else:
dn = int(ch)
dec_bin(dn)
n = input('請輸入十六進位數字:')
print('等效二進位數字為:')
hex_to_bin(n.upper())
程式解析
此程式首先定義了一個將十進位數字轉換為二進位的函式 dec_bin,然後定義了一個將十六進位字串轉換為二進位的函式 hex_to_bin。它遍歷十六進位字串中的每個字元,將其轉換為對應的十進位數字後,再呼叫 dec_bin 將其轉換為二進位。最終輸出等效的二進位表示。