如何在Python中進行不區分大小寫的字串比較?


您是否遇到過需要在Python中比較字串但又希望忽略字母大小寫差異的情況?不用擔心,Python提供了直接的解決方案來實現不區分大小寫的字串比較。在本綜合指南中,我們將探討五個不同的程式碼示例,每個示例都展示了一種進行不區分大小寫字串比較的獨特方法。因此,讓我們深入瞭解並發現Python字串比較多功能性的奇蹟!

在我們深入研究示例之前,讓我們簡要了解一下不區分大小寫的字串比較的含義。在比較字串時,不區分大小寫的方法將大寫字母和小寫字母視為相等,從而忽略字母大小寫。當您想要檢查相等性而不關心字母的大小寫時,這特別有用。

使用lower()方法

讓我們從使用`lower()`方法開始我們的旅程。考慮以下示例

示例

在此程式碼中,`lower()`方法應用於`string1`和`string2`。`lower()`方法將字串中的所有字元轉換為小寫。透過這樣做,我們建立了一個不區分大小寫的比較,允許我們檢查字串是否相等,而不受其字母大小寫的影響。然後,程式以不區分大小寫的方式列印字串是否相等。

string1 = "Hello, World!"
string2 = "hello, world!"

if string1.lower() == string2.lower():
    print("The strings are equal (case-insensitive).")
else:
    print("The strings are not equal (case-insensitive).")

輸出

The strings are equal (case-insensitive).

使用casefold()方法

接下來,讓我們探索`casefold()`方法,這是另一個用於不區分大小寫字串比較的極佳選擇

示例

在此示例中,我們使用`casefold()`方法而不是`lower()`。`casefold()`方法類似於`lower()`,但會執行其他基於Unicode的轉換,使其在不同語言和特殊字元之間進行不區分大小寫的比較時更加健壯。然後,程式列印不區分大小寫比較的結果。

string1 = "I love Python!"
string2 = "i LOVE pYTHON!"

if string1.casefold() == string2.casefold():
    print("The strings are equal (case-insensitive).")
else:
    print("The strings are not equal (case-insensitive).")

輸出

The strings are equal (case-insensitive).

使用'str.casecmp()'函式

我們可以使用的另一種方法是`str.casecmp()`函式。但是,它需要Python 3.10或更高版本。讓我們看看它是如何工作的

示例

我們可以使用的另一種方法是`str.casecmp()`函式。但是,它需要Python 3.10或更高版本。讓我們看看它是如何工作的

string1 = "Hello, Python!"
string2 = "hello, PYTHON!"

if str.casefold(string1) == str.casefold(string2):
    print("The strings are equal (case-insensitive).")
else:
    print("The strings are not equal (case-insensitive).")

輸出

The strings are equal (case-insensitive).

使用're.IGNORECASE'標誌

現在,讓我們探索`re.IGNORECASE`標誌,我們可以將其與正則表示式結合使用以實現不區分大小寫的比較

示例

在此程式碼片段中,我們使用`re.match()`函式以及`re.IGNORECASE`標誌來執行兩個字串的不區分大小寫比較。`re.IGNORECASE`標誌指示`match()`函式在比較期間忽略字母大小寫差異。然後,程式列印不區分大小寫比較的結果。

import re
string1 = "Python is awesome!"
string2 = "pYtHoN is aWeSoMe!"

if re.match(string1, string2, re.IGNORECASE):
    print("The strings are equal (case-insensitive).")
else:
    print("The strings are not equal (case-insensitive).")

輸出

The strings are equal (case-insensitive).

使用'functools.cmp_to_key()'方法

最後,讓我們探索使用`functools.cmp_to_key()`方法自定義比較函式。這種方法允許我們使用任何我們想要的不區分大小寫比較方法

示例

在此程式碼中,我們定義了一個自定義比較函式`case_insensitive_compare()`,它使用`lower()`方法執行兩個字串的不區分大小寫比較。然後,我們使用`functools.cmp_to_key()`將此函式轉換為鍵函式,該函式可以與其他比較函式一起使用。然後,程式列印不區分大小寫比較的結果。

import functools

def case_insensitive_compare(s1, s2):
    return s1.lower() == s2.lower()

string1 = "Python is fun!"
string2 = "pYtHoN iS fUn!"

if case_insensitive_compare(string1, string2):
    print("The strings are equal (case-insensitive).")
else:
    print("The strings are not equal (case-insensitive).")

輸出

The strings are equal (case-insensitive).

總之,Python提供了多種優雅的方法來執行不區分大小寫的字串比較,以適應各種程式設計場景。無論您選擇使用`lower()`、`casefold()`、`str.casecmp()`、`re.IGNORECASE`標誌還是使用`functools.cmp_to_key()`的自定義比較函式,都可以確保Python的多功能性使您可以輕鬆地獲得所需的結果。透過利用本文提供的示例和解釋,您可以自信地處理Python專案中的不區分大小寫的字串比較,使您的程式碼更健壯和更具包容性。

更新於:2023年9月8日

2K+ 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告