并非所有参数都在字符串格式化期间转换 (Python)
Not all arguments converted during string formatting (Python)
Python“TypeError: not all arguments converted during string formatting”出现在我们使用不正确的语法格式化字符串或使用%
带有字符串和数字的运算符时。
要解决该错误,请对format()
字符串调用该方法并为所有占位符提供值。
下面是如何使用该方法的示例str.format()
。
# ✅ using str.format() correctly first = 'James' last = 'Doe' result = "His name is {0} {1}".format(first, last) print(result) # 👉️ "His name is James Doe"
str.format方法执行字符串
格式化操作。
调用该方法的字符串可以包含使用花括号指定的替换字段{}
。
对字符串和整数使用模运算符
%
当您尝试将(modulo) 运算符与字符串和整数一起使用时,也会发生该错误。
my_str = '99' result = my_str % 5 # ⛔️ TypeError: not all arguments converted during string formatting print(result)
要解决该错误,请使用
int()类将字符串转换为整数。
my_str = '99' # ✅ convert to int result = int(my_str) % 5 print(result) # 👉️ 4
我们使用该类int()
将字符串转换为整数,以便能够使用模运算符%
。
一旦(模)运算符两边的值%
都是整数,错误就会解决。
input() 函数总是返回一个字符串
请注意,该input()
函数始终返回一个字符串,即使用户输入了一个整数。
如果您从用户那里获取输入,请确保使用该类int()
将值转换为整数。
# ✅ convert value to integer with int() num = int(input('Enter your fav number: ')) print(num) # 👉️ 10 print(type(num)) # 👉️ <class 'int'>
str.format()
正确使用方法
如果在格式化字符串时出现错误,请确保每个替换字段包含位置参数的数字索引或关键字参数的名称。
first = 'James' last = 'Doe' result = "His name is {f} {l}".format(f=first, l=last) print(result) # 👉️ "His name is James Doe"
该示例使用关键字参数而不是位置参数。
format()
方法提供的参数与字符串中的替换字段一样多。如果您决定将位置参数与数字索引一起使用,请确保从 开始0
,例如{0}
,因为索引在 Python 中是从零开始的。
first = 'James' last = 'Doe' result = "His name is {0} {1}".format(first, last) print(result) # 👉️ "His name is James Doe"
使用格式化字符串文字来解决错误
或者,您可以使用
格式化字符串文字来连接字符串。
first = 'Bobby' last = 'Hadz' result = f'His name is {first} {last}' print(result) # 👉️ "His name is Bobby Hadz"
f
.确保将表达式括在大括号 – 中{expression}
。
这应该是您的首选方法,因为格式化字符串文字是 Python 的最新补充,并提供更易于阅读的语法。
格式化字符串文字还负责自动将值转换为字符串。
name = 'Bobby' age = 30 result = f'{name} is {age} years old.' print(result) # 👉️ "Bobby is 30 years old."
如果我们使用加法 (+) 运算符,我们不必将整数转换为字符串。
name = 'Bobby' age = 30 result = name + ' is ' + str(age) + ' years old.' print(result) # 👉️ "Bobby is 30 years old."
检查变量存储的类型
如果不确定变量存储的类型,请使用内置type()
类。
my_str = '99' print(type(my_str)) # 👉️ <class 'str'> print(isinstance(my_str, str)) # 👉️ True my_num = 5 print(type(my_num)) # 👉️ <class 'int'> print(isinstance(my_num, int)) # 👉️ True
类型
类
返回对象的类型。
如果传入的对象是传入类的实例或子类,则isinstance函数返回
。True
我还写了一篇关于
如何使用 f 字符串进行条件格式化的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: