如何在 Python 中检查字符串是否以列表中的某个后缀结尾?


后缀是指添加到单词末尾的一个字母或一组字母,以构成一个新单词。

假设您有一系列后缀,它们是可以添加到单词末尾以改变其含义的字母组合。您希望在 Python 中检查给定的字符串是否以这些后缀之一结尾。

检查字符串是否以列表中的后缀结尾

示例

在此示例中,我们首先定义一个后缀列表,我们希望检查字符串是否以其结尾。然后,我们使用 input() 函数提示用户输入一个字符串。

然后,我们使用 for 循环遍历后缀列表中的每个后缀。我们使用 endswith() 方法检查输入字符串是否以循环中的当前后缀结尾。

如果输入字符串以当前后缀结尾,我们打印一条消息指示其以哪个后缀结尾,并使用 break 语句退出循环。

如果列表中的任何后缀都不匹配输入字符串的结尾,我们打印一条消息指示该字符串不以任何后缀结尾。

suffixes = ['ing', 'ed', 'ly']
input_str = input("Enter a string: ")

for suffix in suffixes:
    if input_str.endswith(suffix):
        print(f"The string ends with {suffix}")
        break
else:
    print("The string does not end with any of the suffixes")

输出

Enter a string: Wanted
The string ends with ed

使用列表推导式

示例

在此示例中,我们使用列表推导式创建一个输入字符串结尾的后缀列表。我们遍历后缀列表中的每个后缀,并使用 endswith() 方法检查输入字符串是否以当前后缀结尾。

然后,我们使用 if 语句检查结果列表是否不为空。如果列表不为空,我们打印一条消息指示字符串以哪个后缀结尾。如果列表为空,我们打印一条消息指示字符串不以任何后缀结尾。

suffixes = ['ing', 'ed', 'ly']
input_str = input("Enter a string: ")

result = [suffix for suffix in suffixes if input_str.endswith(suffix)]

if result:
    print(f"The string ends with {result[0]}")
else:
    print("The string does not end with any of the suffixes")

输出

Enter a string: Slowly
The string ends with ly

使用 any() 函数

示例

在此示例中,我们使用 any() 函数检查输入字符串是否以后缀列表中的任何后缀结尾。我们将一个生成器表达式传递给 any() 函数,该表达式遍历列表中的每个后缀并检查输入字符串是否以该后缀结尾。

如果任何后缀与输入字符串的结尾匹配,我们打印一条消息指示该字符串以列表中的某个后缀结尾。如果没有任何后缀与输入字符串的结尾匹配,我们打印一条消息指示该字符串不以任何后缀结尾。

suffixes = ['ing', 'ed', 'ly']
input_str = input("Enter a string: ")

if any(input_str.endswith(suffix) for suffix in suffixes):
    print(f"The string ends with one of the suffixes in {suffixes}")
else:
    print("The string does not end with any of the suffixes")

输出

Enter a string: Monalisa
The string does not end with any of the suffixes

使用 filter() 函数

示例

在此示例中,我们使用 filter() 函数创建一个新列表,该列表仅包含输入字符串结尾的后缀。我们将 endswith() 方法作为过滤器函数,并将后缀列表作为要过滤的可迭代对象。

然后,我们使用 list() 函数将过滤后的后缀转换为列表,并将其赋值给 result 变量。

如果 result 列表不为空,我们打印一条消息指示字符串以哪个后缀结尾。如果 result 列表为空,我们打印一条消息指示字符串不以任何后缀结尾。

suffixes = ['ing', 'ed', 'ly']
input_str = input("Enter a string: ")

filtered_suffixes = filter(input_str.endswith, suffixes)
result = list(filtered_suffixes)

if result:
    print(f"The string ends with {result[0]}")
else:
    print("The string does not end with any of the suffixes")

输出

Enter a string: Surfing
The string ends with ing

使用正则表达式

示例

在此示例中,我们使用正则表达式检查输入字符串是否以后缀列表中的任何后缀结尾。我们首先导入 re 模块,该模块为 Python 中的正则表达式提供支持。

然后,我们定义一个正则表达式模式,该模式匹配列表中后缀之前的任何字符,并以其中一个后缀结尾。我们使用格式化字符串字面量 (f-string) 根据列表中的后缀动态创建正则表达式模式。

然后,我们使用 re.match() 函数检查输入字符串是否与正则表达式模式匹配。如果输入字符串与模式匹配,我们打印一条消息指示该字符串

import re
suffixes = ['ing', 'ed', 'ly']
input_str = input("Enter a string: ")

regex_pattern = fr".*({'|'.join(suffixes)})$"

if re.match(regex_pattern, input_str):
    print(f"The string ends with one of the suffixes in {suffixes}")
else:
    print("The string does not end with any of the suffixes")

输出

Enter a string: Lily
The string ends with one of the suffixes in ['ing', 'ed', 'ly']

更新于: 2023年8月10日

581 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告