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

pythonserver side programmingprogramming

后缀定义为在单词末尾添加的字母或字母组,以组成新单词。

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

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

示例

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

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

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

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

suffixes = ['ing', 'ed', 'ly']
input_str = input("输入字符串: ")

for suffix in suffixes:
    if input_str.endswith(suffix):
        print(f"字符串以 {suffix} 结尾")
        break
    else:
        print("字符串不以任何后缀")

输出

输入一个字符串:Wanted
字符串以 ed 结尾

使用列表推导式

示例

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

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

suffixes = ['ing', 'ed', 'ly']
input_str = input("输入字符串: ")

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

if result:
    print(f"字符串以 {result[0]} 结尾")
else:
    print("字符串不以任何后缀结尾")

输出

输入一个字符串:Slowly
字符串以 ly 结尾

使用 any() 函数

示例

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

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

suffixes = ['ing', 'ed', 'ly']
input_str = input("输入一个字符串: ")

if any(input_str.endswith(suffix) for suffix in suffixes):
    print(f"字符串以 {suffixes} 中的一个后缀结尾")
else:
    print("字符串不以任何后缀结尾")

输出

输入一个字符串:Monalisa
字符串不以任何后缀结尾

使用 filter()函数

示例

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

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

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

suffixes = ['ing', 'ed', 'ly']
input_str = input("输入字符串: ")

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

if result:
    print(f"字符串以 {result[0]} 结尾")
else:
    print("字符串不以任何后缀结尾")

输出

输入字符串:Surfing
字符串以 ing 结尾

使用常规表达式

示例

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

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

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

import re
suffixes = ['ing', 'ed', 'ly']
input_str = input("输入一个字符串: ")

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

if re.match(regex_pattern, input_str):
    print(f"字符串以 {suffixes} 中的一个后缀结尾")
else:
    print("字符串不以任何后缀结尾")

输出

输入一个字符串:Lily
字符串以 ['ing', 'ed', 'ly'] 中的一个后缀结尾

相关文章