我有舉辦一些變量作爲字符串類。例如轉換字符串變量爲其他類型
x = "1"
y = "2.0"
z = "timedelta(seconds=10)"
正如您在上面看到的,變量實際上是int/float/timedelta-types。 我需要返回這些變量與他們的真實類型。 (x應作爲int返回,y應返回爲浮點數,z應返回爲datetime.timedelta)
我正在考慮更改getattr並嘗試在返回值之前找出該類型,但小測試我所做的,似乎不工作:
from datetime import datetime, timedelta
def test():
string = "timedelta(seconds=10)"
x = eval(string)
print x
print type(x)
if type(x) == 'datetime.timedelta':
print "YES"
else:
print "NO"
輸出是:
0:00:10
<type 'datetime.timedelta'>
NO
爲什麼是如果情況返回false?有沒有更好的方式來返回這些變量與真正的類型?
似乎不work.Traceback(最新最後調用): 文件 「eval.py」,14號線在 試驗(+) 文件「EVAL。py「,第8行,在測試 如果isinstance(x,datetime.timedelta): AttributeError:類型對象的'datetime.datetime'沒有屬性'timedelta' –
theAlse
這是因爲你有'從datetime導入日期時間',在我的例子我通過一個完整的「模塊路徑」來引用'timedelta',只需將'datetime.timedelta'替換爲'timedelta'。注意,在Python中使用'eval()'被認爲是一個非常糟糕的做法,請參見http:// stackoverflow .com/questions/1087255/use-of-eval-in-python瞭解詳情。 –