python中的格式错误处理
有没有办法创建一个处理格式错误的函数?我不是说常规的int错误,我的意思是,例如,对于这种格式:“%d/%m/%Y”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(“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!