打印字符串和浮点数时出错

3 投票
1 回答
5450 浏览
提问于 2025-05-01 04:26
if __name__ == "__main__":
    fptr = open(sys.argv[1], 'r')
    for line in fptr:
        list1 = []
        s = ''
        for item in re.findall(r'[\S]+', line):
            try:
                list1.append(int(item))
            except:
                s = s + item + ' '
        if not len(list1) == 0:
            avg = sum(list1) / len(list1)
            print(list1)
            print(s)
            print(avg)
            print("{0:.3f} {}".format(avg, s)) //ERROR OCCUR

这是标准输出:

[12, 14, 5, 20]
From sample set A
12.75
Traceback (most recent call last):
  File "./parse.py", line 28, in <module>
    print("{0:.3f} {}".format(avg, s))
ValueError: cannot switch from manual field specification to automatic field numbering

看起来字符串和平均值可以单独打印出来。但是,为什么我不能把它们一起打印呢?

暂无标签

1 个回答

17

Python 抱怨你给第一个格式字段编号了,但第二个却没有。你可以选择给它们都编号:

print("{0:.3f} {1}".format(avg, s))
#       ^       ^

或者干脆都不编号:

print("{:.3f} {}".format(avg, s))

不过要注意,第二种方法只在 Python 2.6 或更高版本中有效。

撰写回答