如何自定义 PyInputPlus 显示的错误消息?

How can I customise error messages shown by PyInputPlus?

如何自定义 PyInputPlus 在 python 中显示的错误消息? 试了很多方法都不行

import pyinputplus as pyip
number = pyip.inputNum("Enter your phone number : ",
                       min=1000000000, 
                       max=9999999999)
number

我想将错误消息打印为 请输入有效的 10 位数字 phone。 有什么办法吗? 我尝试使用 "allowRegexes 和 blockRegexes" 但无法理解。

如果您将其用于真实世界的项目,我建议您使用 python 本身的 input,这个库似乎没有很好的记录和维护。这可能会在您的代码中为将来带来很多奇怪的错误。

但要回答您的问题,您可以使用带有参数 blockRegexes 的正则表达式来完成。如果您无法理解它,这将是一个正则表达式问题而不是 python 问题。

this website你可以学到很多关于正则表达式的知识,我推荐,正则表达式是一个非常重要的理解工具。 关于你的问题,accordingly to the docs:

blocklistRegexes (Sequence, None): A sequence of regex str or (regex_str, error_msg_str) tuples that, if matched, will explicitly fail validation.

因此,在您的情况下,元组中的第一项应该是正则表达式,以阻止所有具有多于或少于 10 个整数字符的内容:

^\d{10}$

可以找到此正则表达式的完整解释 here

你的元组中的第二项应该是你想要在错误发生时出现的字符串:

"请输入有效的 10 位数字 phone"

所以你的代码应该是这样的:

number = pyip.inputNum("Enter your phone number : ",
                       min=1000000000, 
                       max=9999999999,
                       blockRegexes=[(r"^\d{10}$","please enter a valid 10 digit phone number")])