f字符串表达式中的TypeError-'str'对象不可调用

时间:2019-12-11 09:55:32

标签: python python-3.x f-string

当我尝试在Python 3.7中使用f-string语法编写字符串时遇到错误。

我的代码如下:

i = 1

site_id= 0
meter = 0
model_id = i
target_name = 'log1p_meter_reading_corrected2'

f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'

返回错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-1ebe1c78d868> in <module>
      6 target_name = 'log1p_meter_reading_corrected2'
      7 
----> 8 f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'

TypeError: 'str' object is not callable

是什么导致错误,我应该如何纠正我的代码?

1 个答案:

答案 0 :(得分:4)

f-strings中,您不需要用str()来包装变量。以下应该起作用:

f'model_site_id_{site_id}_meter_{meter}_{target_name}_model_id_{model_id}_11_12_19.hdf5'

但是,从技术上讲,您的代码应该可以正常工作,str()调用只是多余的-您可能通过执行以下操作来重新分配了保留关键字str

str = 'test'

现在,如果我们这样做

>>> str(site_id)

我们得到

TypeError: 'str' object is not callable
相关问题