from dateutil.parser import parse
def convert_to_ddmmyy(date_string):
try:
date = parse(date_string)
formatted_date = date.strftime("%d%m%y")
return formatted_date
except ValueError:
return "Invalid date format"
# Example usage
date_string = "13.75"
converted_date = convert_to_ddmmyy(date_string)
print(converted_date)
这将打印 130623。
我希望将其打印为无效或类似的内容,我可以进行哪些更改? 它必须使用解析器,因为我正在处理各种日期格式,但我需要排除这种格式。
使用正则表达式识别无效格式:模式
\d\d\.\d\d
拒绝格式 'xx.xx'
中的任何字符串,其中 x 是十进制数字。这涉及到您的具体情况。第二个表达式处理一系列格式,如下所述。
import re
from dateutil.parser import parse
def convert_to_ddmmyy(date_string):
# if re.match(r"\d\d\.\d\d",date_string): # rejects basic pattern xx.xx
if re.fullmatch(r"\d*\.\d*",date_string): # rejects wider range of similar patterns
return "Invalid date format"
try:
date = parse(date_string)
formatted_date = date.strftime("%d%m%y")
return formatted_date
except ValueError:
return "Invalid date format"
# Example usage
date_string = "13.75"
converted_date = convert_to_ddmmyy(date_string)
print(converted_date)
给予
Invalid date format
这里有一个解释。
match
在字符串中查找模式并返回 True 或 False。 \d
表示数字。 \
用于使其成为控制值,而不是查找字母 d
;需要 \.
来查找小数点,因为这在正则表达式中使用(接受任何内容)。 *
表示没有或以上。因此,第二个模式查找没有或任何数字、小数点(句号)、没有或任何数字。然而,match
会拒绝2023.12.12
(这可能是一个日期),因为它看到模式2023.12
和12.12
;但 fullmatch
检查整个字符串是否与模式匹配,因此会接受该字符串。希望这有用。正则表达式在检查和更改字符串方面有很多用途。