如何在 Python 中进行不区分大小写的字符串比较?

pythonserver side programmingprogramming更新于 2023/12/12 2:53:00

您是否遇到过需要在 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 项目中不区分大小写的字符串比较,从而使您的代码更加健壮和包容。


相关文章