Python中不区分大小写的字符串比较
将两个字符串都转换为小写以执行不区分大小写的字符串比较,例如 if string1.lower() == string2.lower():
。 通过将两个字符串转换为相同的大小写,我们执行不区分大小写的比较。
string1 = 'Jiyik'
string2 = 'JIYIK'
# ✅ using str.lower()
if string1.lower() == string2.lower():
# 👇️ this runs
print('The strings are equal when case is ignored ✅')
else:
print('The strings are NOT equal when case is ignored ✅')
# ------------------------------------------------------------
# ✅ using str.casefold()
if string1.casefold() == string2.casefold():
# 👇️ this runs
print('The strings are equal when case is ignored ✅')
else:
print('The strings are NOT equal when case is ignored ✅')
第一个示例使用 str.lower()
方法执行不区分大小写的字符串比较。
str.lower()
方法返回字符串的副本,其中所有大小写字符都转换为小写。
string1 = 'Jiyik'
string2 = 'JIYIK'
if string1.lower() == string2.lower():
# 👇️ this runs
print('The strings are equal when case is ignored ✅')
else:
print('The strings are NOT equal when case is ignored ✅')
该方法不会更改原始字符串,而是返回一个新字符串。 字符串在 Python 中是不可变的。
通过将两个字符串转换为相同的大小写(小写或大写),我们可以执行不区分大小写的字符串比较。
str.lower()
方法最适合在比较 ASCII 字符串时忽略大小写。
对于非 ASCII 字符串,使用 str.casefold()
方法。
使用 str.casefold() 进行不区分大小写的字符串比较
使用 str.casefold()
方法执行不区分大小写的字符串比较,例如 if string1.casefold() == string2.casefold():
。 str.casefold()
方法删除字符串中的所有大小写区别。
string1 = 'Jiyik'
string2 = 'JIYIK'
if string1.casefold() == string2.casefold():
# 👇️ this runs
print('The strings are equal when case is ignored ✅')
else:
print('The strings are NOT equal when case is ignored ✅')
str.casefold()
方法返回字符串的大小写副本。
# 👇️ using str.casefold()
print('JIYIK'.casefold()) # 👉️ jiyik
print('ß'.casefold()) # 👉️ ss
# 👇️ using str.lower()
print('JIYIK'.lower()) # 👉️ jiyik
print('ß'.lower()) # 👉️ ß
大小写折叠类似于小写,但更具侵略性,因为它旨在删除字符串中的所有大小写区别。
请注意德语小写字母 ß 如何等于 ss。
由于字母已经是小写字母,
str.lower()
方法按原样返回字母,而str.casefold()
方法将其转换为 ss。
如果我们只比较 ASCII 字符串,则不需要使用 str.casefold()
方法。 在这种情况下,使用 str.lower()
就足够了。
如果我们要比较的字符串包含重音符号,请使用
unicodedata.normalize()
方法。
使用 unicodedata.normalize() 进行不区分大小写的字符串比较
使用 unicodedata.normalize()
方法执行不区分大小写的字符串比较。 unicodedata.noramlize()
方法将返回字符串的正常形式,因此带重音的等效字符被认为是相等的。
import unicodedata
def caseless_compare(str1, str2):
return (unicodedata.normalize('NFKD', str1) ==
unicodedata.normalize('NFKD', str2))
string1 = 'dž'
string2 = 'dž'
print(string1 == string2) # 👉️ False
print(string1.lower() == string2.lower()) # 👉️ False
print(string1.casefold() == string2.casefold()) # 👉️ False
print(caseless_compare(string1, string2)) # 👉️ True
我们正在比较的字符串包含重音符号。 它们代表相同的字符(或字符序列),但具有不同的视觉外观。
str.lower()
和str.casefold()
方法在比较字符串方面做得不好,所以我们不得不使用unicodedata.normalize()
方法。
unicodedata.normalize()
方法返回提供的 Unicode 字符串的正常形式。
我们使用 NFKD 作为表单参数。 范式 KD (NFKD) 应用兼容性分解。 换句话说,它将所有字符替换为它们的等价物。
我们对示例中的两个字符串进行了规范化,以执行不区分大小写的字符串比较。
仅当我们的字符串可能包含不一致的重音字符时,才需要这种方法。
我们应该选择哪种方法取决于您的用例。
如果我们只使用 ASCII 字符串,则使用 str.lower()
方法就足够了。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。