自分のコードには表示されませんが、潜在的なintを評価したい場合は、文字列である浮動小数点数など、日付の意味が分かりません。あなたを与えるだろう
from dateutil import parser
from datetime import datetime
def text_type_determine(i):
types = {int: 'integer', float: 'double', bool: 'boolean', str: 'string', datetime: "date"}
for tpe in [literal_eval, parser.parse]:
try:
return types.get(type(tpe(i)))
except (AttributeError, ValueError):
pass
return types.get(type(i))
:
In [17]: text_type_determine(1)
Out[17]: 'integer'
In [18]: text_type_determine(datetime.now())
Out[18]: 'date'
In [19]: text_type_determine("2016-03-19")
Out[19]: 'date'
In [20]: text_type_determine("2016")
Out[20]: 'integer'
In [21]: text_type_determine("2016.23")
Out[21]: 'double'
オブジェクトを日付として解析することができれば、あなたのようなもので
dateutilを使用することができますテストしたい場合は、
ast.literal_eval
from ast import literal_eval
def text_type_determine(i):
types = {int: 'integer', float: 'double', bool: 'boolean', str: 'string'}
try:
return types.get(type(literal_eval(i)))
except ValueError:
return types.get(type(i))
使用することができます
dateutil.parser
が予期しない出力を与える可能性があるため、確認の順序を並べ替えることができます。あなたの日付が常に同じ順序になっている場合、構文解析にはdatetime.strptime
を使用してください。そうでない場合は、strptimeを使用して日付のバリエーションを試してみてください。
あなたはこれを自分で行う方法について考え始めましたか?このサイトは、たとえ丁寧に質問されても、単純な「私にいくつかのコードを渡す」という質問には嫌われがちです。 –