Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的格式错误处理_Python_Arrays_Function_If Statement_Format - Fatal编程技术网

python中的格式错误处理

python中的格式错误处理,python,arrays,function,if-statement,format,Python,Arrays,Function,If Statement,Format,有没有办法创建一个处理格式错误的函数?我不是说常规的int错误,我的意思是,例如,对于这种格式:“%d/%m/%Y”Python中处理错误的典型方式是引发异常,类似于int(“foo”)引发ValueError的方式。举个例子,你可以做: def parse_date(date_string: str): """returns 3-tuple of ints, raising ValueError on invalid input""&q

有没有办法创建一个处理格式错误的函数?我不是说常规的int错误,我的意思是,例如,对于这种格式:“%d/%m/%Y”

Python中处理错误的典型方式是引发异常,类似于
int(“foo”)
引发
ValueError
的方式。举个例子,你可以做:

def parse_date(date_string: str):
    """returns 3-tuple of ints, raising ValueError on invalid input"""
    try:
        nums = date_string.split("/")
        assert len(nums) == 3
        return int(nums[0]), int(nums[1]), int(nums[2])
    except AssertionError:
        raise ValueError("exactly three slash-separated ints expected")
请注意,如果单个
num
中的一个不是int,则
int()
转换将引发自己的
ValueError
,并且
除了断言错误
之外,它只允许将其传播到调用方

>>> parse_date("12/25/2020")
(12, 25, 2020)
>>> parse_date("lkjasdflkjasd")
Traceback (most recent call last):
  File "<stdin>", line 5, in parse_date
AssertionError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 8, in parse_date
ValueError: exactly three slash-separated ints expected

请注意,对于解析日期的特定示例,您可能希望使用
datetime
模块中的
strtime
方法之一,该模块已经为您完成了这项工作(以及更多)

谢谢大家!!但不幸的是,我在使用函数时出现了一些错误:raise ValueError(“预期正好三个斜杠分隔的整数”)ValueError:预期正好三个斜杠分隔的整数这意味着您传入的不是三个斜杠分隔的整数。错误处理正在工作!我想你是在问字符串格式的问题吧?谷歌
python字符串格式设置
,这里有一个例子:。如果您想专门格式化dattime,请选择
python日期格式
。否则,请澄清您的问题。希望这有帮助。
while True:
    try:
        day, month, year = parse_date(input("Enter date (%d/%m/%y): "))
        print(f"Remember remember the {day}th of {month}!")
    except ValueError as e:
        print(f"Bad input: {e}")
Enter date (%d/%m/%y): sdlfkj
Bad input: exactly three slash-separated ints expected
Enter date (%d/%m/%y): 5/11/2020
Remember remember the 5th of 11!