如何在 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-09-08

3K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告