Python判断字符串后缀除endswith()方法外还有哪些可替代实现方案?
德语名词定冠词匹配代码解决方案
现有代码核心问题说明
endswith多后缀传参错误:你当前直接在括号内写多个连续字符串的写法会被Python自动拼接为单个字符串,比如'er' 'ismus'实际等价于'erismus',无法实现匹配多个后缀的效果。- 语法错误:
else关键字后不能附加判断条件,如果你需要对第三个分支做条件判断,需要使用elif。 - 方括号传参失效原因:Python的
str.endswith()方法仅支持传入单个字符串,或者由多个字符串组成的元组作为多后缀参数,传入列表(方括号包裹)不符合参数要求,会触发类型错误。
方案1:修正原有if-elif逻辑
适合规则固定、不需要频繁调整的场景:
word = input("Enter word: ") if word.endswith(('er', 'ismus')): print("der") elif word.endswith(('falt', 'heit', 'keit', 'schaft', 'ung')): print("die") elif word.endswith(('chen', 'lein')): print("das") else: # 处理未匹配到已知后缀的情况 print("未匹配到对应定冠词规则")
方案2:可维护性更高的字典映射方案
如果后续需要新增更多后缀规则,用字典存储规则会更方便修改,不用调整判断逻辑:
# 键为对应定冠词,值为匹配的后缀元组 article_rules = { 'der': ('er', 'ismus'), 'die': ('falt', 'heit', 'keit', 'schaft', 'ung'), 'das': ('chen', 'lein') } word = input("Enter word: ") matched = False for article, suffixes in article_rules.items(): if word.endswith(suffixes): print(article) matched = True break if not matched: print("未匹配到对应定冠词规则")
内容的提问来源于stack exchange,提问作者e007q
相关产品推荐
相关产品推荐

