Python 中不区分大小写的字符串 endswith()

Python 中不区分大小写的字符串 endswith()

Case-insensitive string endswith() in Python

要以str.endswith()不区分大小写的方式使用该方法:

  1. 使用str.lower()将两个字符串都转换为小写。
  2. 使用str.endswith()小写字符串的方法。
主程序
string = 'bobbyhadz.com' substring = 'COM' if string.lower().endswith(substring.lower()): # 👇️ this runs print('The string ends with the substring (case-insensitive)') else: print('The string does NOT end with the substring (case-insensitive)') # 👇️ True print( string.lower().endswith(substring.lower()) )

str.lower方法返回字符串
的副本,其中所有大小写字符都转换为小写。

在使用该方法之前,我们使用该str.lower()方法将两个字符串都转换为小写str.endswith()

当两个字符串都转换为相同的大小写时,我们可以以不区分大小写的方式使用该方法。 str.endswith()

如果您的字符串包含非 ASCII 字母,请使用该str.casefold()方法而不是str.lower().

主程序
string = 'bobbyhadz.com' substring = 'COM' if string.casefold().endswith(substring.casefold()): # 👇️ this runs print('The string ends with the substring (case-insensitive)') else: print('The string does NOT end with the substring (case-insensitive)') # 👇️ True print( string.casefold().endswith(substring.casefold()) )

str.casefold方法返回字符串的
casefolded 副本。

主程序
# 👇️ using str.casefold() print('BOBBY'.casefold()) # 👉️ bobby print('ß'.casefold()) # 👉️ ss # 👇️ using str.lower() print('BOBBY'.lower()) # 👉️ bobby print('ß'.lower()) # 👉️ ß

Casefolding 类似于小写,但更激进,因为它旨在删除字符串中的所有大小写区别。

请注意德语小写字母如何ß等于ss

由于该字母已经是小写字母,该str.lower()方法按原样返回该字母,同时该str.casefold()方法将其转换为ss.

str.casefold()如果您只比较 ASCII 字符串,则无需使用该方法。在这种情况下,使用str.lower()就足够了。