TypeError: not all arguments converted during string formatting

字符串格式化输出时,其中一种方法是这样的:

for value in ['A', 'B', 'C']:
    print('输出: %s' % value)

我这打印子进程运行状态时print()了列表中的几个字符串,但报错如下:

TypeError: not all arguments converted during string formatting

翻译为:不是所有的参数在字符串格式化期间转换,我屮艸芔茻,出错位置看了下,原来是%打错了,打成了$,开始不知道啥原因,这错误第一次见,把这个信息发出来给大家参考。这是个低级错误

补充:字符串输出的几种方式

  • 直接print()输出
print('str1', 'str2', 'str3', '...')
  • '%s' % value 占位符输出
# 1. 单个
>>> name = 'Jason'
>>> print('name: %s' % name)
name: Jason
# 2. 多个
>>> name1, name2 = 'Jason', 'Bob'
>>> print('name1: %s; name2: %s' % (name1, name2))
name1:, Jason; name2: Bob
# 也可以自定义输出顺序
>>> print('name1: %s; name2: %s' % (name2, name1))
name1: Bob; name2: Jason
  • 输出多个字符串变量时,%后的多个变量需要用小括号括起来,否则会报没有足够参数的错:

    TypeError: not enough arguments for format string
    
  • format()格式化输出

# 1. 单个
>>> '{}'.format('world')
'world'
# 2. 多个
>>> word1, word2 = 'hello', 'world'
>>> hello_world = '{}, {}'.format(word1, word2)
>>> hello_world
'hello, world'
# 指定位置输出
>>> hello_world = '{1}, {1}'.format(word1, word2)
>>> hello_world
'world, world'
  • 指定位置输出时所有{}内都必须带参数的下标,否则会 不能从手动字段编号转换为自动字段编号ValueError 错误:

    ValueError: cannot switch from manual field specification to automatic field numbering
    
  • 也必须要在下标范围内,否则会报超限的IndexError 错误:

    IndexError: Replacement index 2 out of range for positional args tuple
    

你可能感兴趣的:(CodeBug,字符串,python)