【问题标题】:using try and regex in python在 python 中使用 try 和 regex
【发布时间】:2017-05-02 10:09:08
【问题描述】:

我想使用 try/except 语句来检查字符串是否仅由字母组成。 以下有什么问题

class LetterError(Exception):
    pass

name = ""
while name=="":
    try:
        x = re.match(r'[a-zA-Z]',(input("Please enter a name: ")))
        raise LetterError
    except LetterError :
        print("Insert letters only")

【问题讨论】:

  • 那么你需要至少使用r'[a-zA-Z]+$'re.match。然后只提出错误if not x
  • 您只使用了[A-Za-z] 中的一个字母。添加+ 像这样[A-Za-z]+。这意味着很多字母。
  • @monika 我更新了正则表达式。看看

标签: python regex exception try-catch


【解决方案1】:

您的正则表达式[a-zA-Z] 将仅匹配给定范围[a-zA-Z] 之外的一个字符。

我想你的名字是指多个字符。因此使用[a-zA-Z]+ 来匹配多个字符。

【讨论】:

    【解决方案2】:

    您在所有情况下都会引发错误。您需要添加一个条件,而且您不需要自定义错误。来自这里的正则表达式https://stackoverflow.com/a/3617808/5567387

    name = ""
    while name == "":
        name = raw_input("Please enter a name: ")
        is_valid = re.match(r'^[a-zA-Z]+$', name)
        if not is_valid:
            name = ""
    

    【讨论】:

    • 你测试了吗?存在多个问题。
    • OP 想要检查字符串是否仅由字母组成。如果字符串中包含数字,则当前解决方案将接受,例如如果是abcd345abcd5efgh
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 2016-04-06
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多