【问题标题】:Why string formatting in python is not working as expected? [duplicate]为什么 python 中的字符串格式无法按预期工作? [复制]
【发布时间】:2018-06-03 08:54:44
【问题描述】:
>>> '{lst.__len__()}'.format(lst=[1,2])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute '__len__()'

请帮助我,并提前感谢您的帮助.....

【问题讨论】:

  • 请尽可能避免链接到第三方网站。请发布代码而不是图像。也就是说,这些错误很有帮助,是您的答案。
  • 看看this answer,可能会有帮助。
  • 你想得到什么? lst 的长度是字符串还是其他?
  • 您可以使用 len([1,2,3,4]) 获取列表的长度。避免直接调用任何看起来像__XXXXXX__() 的方法——按照惯例,它们不应该从外部调用。有一些方法会调用它们,例如len()str()next() 等。您的代码可以更改为'{}'.format(len([1,2])) 以获取列表的长度为字符串。
  • 非常感谢大家。很高兴看到您的回复,他们提供了帮助。我从这个有用的链接stackoverflow.com/questions/45736050/… 了解了字符串格式的这种行为

标签: python python-3.x


【解决方案1】:

您不能在字符串占位符中调用方法,您只能访问属性或索引值。

对于你想做的,你可以做以下,但它不安全,你应该谨慎使用它。

eval('{lst}'.format(lst=[1,2])).__len__()

否则,不,占位符不能用于调用方法。

【讨论】:

  • 不好的建议。 '{}'.format(len([1,2])) 是安全的,它将返回 OP 也会(如果按预期工作)并且您的不 - 它返回 int 的列表长度的字符串表示形式。
  • 好吧,我认为它有效,但这并不是 OP 所想的,他最初想动态传递列表,你有点不这样做。是的,这就是您建议的方式,可能还有其他几种方式:)
猜你喜欢
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2023-04-01
  • 2012-03-06
  • 1970-01-01
  • 2014-01-14
相关资源
最近更新 更多