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() 方法被呼叫在字串常值上,引數為 45'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'

程式碼解密:

  1. .format() 方法允許我們將變數插入到字串中。
  2. 位置引數依照順序替換 {}
  3. 可以使用索引指定引數的位置。
  4. 關鍵字引數可以用於替換對應的 {}

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 分割成單獨的公司名稱。

程式碼解密:

  1. split() 方法用於將字串分割成列表。
  2. 可以自定義分隔符,若未指定,則預設使用空格作為分隔符。
  3. 分割後的列表可以進行遍歷操作。

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

程式碼解密:

  1. 這些方法用於測試字串的內容。
  2. 每種方法都有特定的用途,例如測試是否為數字或字母。
  3. 傳回值為 TrueFalse,便於進行條件判斷。

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

程式碼解密:

  1. 這些方法用於搜尋子字串。
  2. 可以檢查字串是否以特定子字串開始或結束。
  3. 可以找到子字串在字串中的索引或出現次數。

7.8.6 轉換字串

Python 提供了多種方法來轉換字串,例如轉換為大寫或小寫。

轉換方法一覽

方法說明
upper()將字串轉換為大寫。
lower()將字串轉換為小寫。

範例

>>> S = "Hello World"
>>> S.upper()
'HELLO WORLD'
>>> S.lower()
'hello world'

程式碼解密:

  1. 這些方法用於轉換字串的大小寫。
  2. 可以將字串轉換為大寫或小寫,以滿足不同的需求。

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 接受兩個引數:wordletter。它遍歷 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 將其轉換為二進位。最終輸出等效的二進位表示。