gpt4 book ai didi

python - 在 Python 中验证数据类型

转载 作者:行者123 更新时间:2023-11-30 22:38:17 24 4
gpt4 key购买 nike

我正在提取一个包含键值对的数据文件,其中数据是原始数据并以字符串开头。我创建了这个函数来传递键值对的值来检查它是什么数据类型。

我创建了这个函数来标记该值并根据需要将其转换为适当的数据类型。

这是处理这个问题的最佳方法吗?或者 python 中是否已经包含更快或更高效的库或函数?

import dateparser
def dataType(value):
try:
int(value)
return 'INTEGER'
except ValueError:
try:
float(value)
return 'DOUBLE'
except ValueError:
try:
if value and value[0].isdigit():
dateparser.parse(value, settings={'STRICT_PARSING': True})
return 'DATETIME'
else:
return 'VARCHAR'
except ValueError:
return 'VARCHAR'

最佳答案

你云做了类似的事情:

import re
from collections import OrderedDict
import datetime

register_type = OrderedDict()


register_type["INTEGER"] = {"handle":int, "args": [], "kw": {}}
register_type["DOUBLE"] = {"handle":float, "args": [], "kw": {}}
register_type["DATE"] = {"handle":lambda x: datetime.datetime.strptime(x, "%Y-%m-%d"), "args": [], "kw": {}}
register_type["ALPHA"] = {"handle":lambda x: re.match("\w+", x), "args": [], "kw": {}}


def get_type(value):
type_ = "UNKNOWN"
for k, v in register_type.items():
try:
parsed = v["handle"](value, *v["args"], **v["kw"])
type_ = k
break
except ValueError as E:
continue
return type_




# print(get_type("2017-01-26"))
# "DATE"
# print(get_type("ali"))
# "alpha"
# print(get_type("10"))
# "INTEGER"
# print(get_type("10.0"))
# "DOUBLE"

通过这种方式,您可以轻松添加解析器,从而可以解耦代码。

关于python - 在 Python 中验证数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com