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']