【问题标题】:Python String Formatting - Type Error - Not enough arguments for format stringPython字符串格式化 - 类型错误 - 格式字符串的参数不足
【发布时间】:2017-09-28 05:18:37
【问题描述】:

那么这个字符串有什么问题呢?我无法弄清楚为什么它说格式字符串没有足够的参数。我是 Python 新手,只是想弄清楚。

编辑:这与建议的其他问题不同。另一个是尝试做一些我什至没有进入的疯狂数组的东西。我只需要了解元组的基本概念以及字符串格式化的工作原理。

    data = ["John", 23, "United States", "United Kingdom"]
    format_string = "Your name is %s and you are %s years old. You were born in %s and are now living in %s."
    print(format_string %data)

是不是因为我里面没有足够的“strings”?我如何拥有一个包含字符串和数字的列表?例如,一个 JSON 列表。

【问题讨论】:

标签: python string formatting


【解决方案1】:

如果您将列表作为元组传递,它应该可以正常工作。

data = ["John", 23, "United States", "United Kingdom"]
format_string = "Your name is %s and you are %s years old. You were born in %s and are now living in %s."
print(format_string % tuple(data))

【讨论】:

  • 考虑查看这个post
  • 考虑将此问题标记为重复,因为该链接基本上问的是相同的问题
  • @DigitalVeer - 那么什么是元组。你的回答对我有用。但我是一个初学者,需要了解“元组”是什么,所以保持开放。我没有得到一个定义。据我所理解。我可以混合数据集和字符串,它似乎工作正常。即使 23 是一个数字,我也不需要在此使用 %d。为什么?元组与常规列表的区别是什么?
  • 谷歌搜索。元组是不可变的,列表是可变的。它们主要用括号和方括号来区分
  • @coderx 不要相信我的话;但是,我相信如果您使用可变数据类型(例如 list),那么它只会采用该数据类型给出的第一个值。但是,使用元组等不可变对象将确保所有模式都匹配。我会查找为什么会存在这种行为并回复您。
【解决方案2】:

str.__mod__ 的右操作数必须是元组或单个值。由于它不是元组,因此它被解释为单个值,而格式字符串需要一个 4 元组。要么将data 转换为元组,要么首先将其设为元组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 2020-03-10
    • 2019-07-23
    • 1970-01-01
    • 2012-06-24
    • 2015-10-16
    • 2015-11-16
    相关资源
    最近更新 更多