Python 3.x 属性错误:';str';对象没有属性';title()';

Python 3.x 属性错误:';str';对象没有属性';title()';,python-3.x,Python 3.x,前两种说法很有效;这意味着“str”对象具有属性title()。 第三个print语句给出错误。为什么会这样?str.format()语法与f字符串语法不同。特别是,虽然f字符串基本上允许您将任何表达式放在括号之间,str.format() 替换字段的语法如下所示: first="harry" last="potter" print(first, first.title()) print(f"Full name: {first.title()} {last.title()}") print("

前两种说法很有效;这意味着“str”对象具有属性title()。 第三个print语句给出错误。为什么会这样?

str.format()语法与f字符串语法不同。特别是,虽然f字符串基本上允许您将任何表达式放在括号之间,
str.format()

替换字段的语法如下所示:

first="harry"
last="potter"

print(first, first.title())
print(f"Full name: {first.title()} {last.title()}")
print("Full name: {0.title()} {1.title()}".format(first, last))
replacement\u field::=“{”[字段名称][“!”转换][“:“格式规格]”}”
字段_名称::=arg_名称(“.attribute_name |”[“element_index”]”)*
arg_name::=[标识符|数字+]
属性名称::=标识符
元素索引::=数字+索引字符串
索引字符串::=

F-strings提供了一种在字符串文本中嵌入表达式的方法,使用最小语法。应该注意,f字符串实际上是在运行时计算的表达式,而不是常量值

这显然与
str.format()
不同(更复杂),后者更像是一个简单的文本替换-一个f字符串是一个表达式,它是这样执行的,并且允许在括号中包含完整的表达式(事实上,您甚至可以将f字符串嵌套在彼此内部,这很有趣)。

str.format()
语法与f字符串语法不同。特别是,虽然f字符串基本上允许您将任何表达式放在括号之间,
str.format()

替换字段的语法如下所示:

first="harry"
last="potter"

print(first, first.title())
print(f"Full name: {first.title()} {last.title()}")
print("Full name: {0.title()} {1.title()}".format(first, last))
replacement\u field::=“{”[字段名称][“!”转换][“:“格式规格]”}”
字段_名称::=arg_名称(“.attribute_name |”[“element_index”]”)*
arg_name::=[标识符|数字+]
属性名称::=标识符
元素索引::=数字+索引字符串
索引字符串::=

F-strings提供了一种在字符串文本中嵌入表达式的方法,使用最小语法。应该注意,f字符串实际上是在运行时计算的表达式,而不是常量值

这显然与
str.format()
不同(更复杂),后者更像是一个简单的文本替换-一个f字符串是一个表达式,它是这样执行的,并且允许在括号内使用完整的表达式(事实上,您甚至可以将f字符串嵌套在彼此内部,这很有趣)。

str.format()在各自的占位符中传递字符串对象。通过使用“”,您可以访问字符串属性或功能。这就是为什么{0.title()}在string类中搜索特定的方法,但它没有得到任何关于title()的信息

但是如果你使用

replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
arg_name          ::=  [identifier | digit+]
attribute_name    ::=  identifier
element_index     ::=  digit+ | index_string
index_string      ::=  <any source character except "]"> +
conversion        ::=  "r" | "s" | "a"
format_spec       ::=  <described in the next section>
str.format()在各自的占位符中传递字符串对象。通过使用“”,您可以访问字符串属性或功能。这就是为什么{0.title()}在string类中搜索特定的方法,但它没有得到任何关于title()的信息

但是如果你使用

replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
arg_name          ::=  [identifier | digit+]
attribute_name    ::=  identifier
element_index     ::=  digit+ | index_string
index_string      ::=  <any source character except "]"> +
conversion        ::=  "r" | "s" | "a"
format_spec       ::=  <described in the next section>