需要的故障排除:TypeError: can only concatenate tuple (not "str") to tuple

问题描述

当我们运行这段代码时,就会出现上面提到的错误。在过去的几个小时里,我们一直在努力解决这个问题,但似乎没有任何效果

有人可以为我们指明正确的方向。

import math 
myList=[] 

with open("data_2.txt") as f: 
    for line in f:
        myList.append(tuple(line.rstrip().split()))
dic = {}
for index,ele in enumerate(myList):
    key=index+1
    val_2=float(ele[1])
    val_3=float(ele[2])
    dic.update({key: (ele[0],val_2,val_3)})
    for i in range(len(dic)):
            power= 5//(val_2)
            P=pow(0.5,power)
            cal_grams=val_3*P
            if cal_grams<100:
                outfile = open("Element_Shortage_List.txt","w")           
                outfile.write(ele+ "   " + float(cal_grams) + "\n")
                outfile.close()

解决方法

正如错误消息告诉您的那样,您将一个元组与一个字符串连接起来。

如果您真的想将以下行写入您的文件,请使用字符串格式:

然后这一行:

outfile.write(ele+ "   " + float(cal_grams) + "\n")

成为

outfile.write(f"{ele}   {float(cal_grams)}\n")

有关 f 字符串的更多详细信息:https://www.python.org/dev/peps/pep-0498/

,

感谢大家,尤其是 Menno Holscher。

它终于在我们这样做时读取

outfile.write(str(ele)+ "  "+str(cal_grams)+"\n")
,

错误告诉您:您不能添加元组和 str 类型,因此将元组转换为 str。像这样。

import math 
myList=[] 

with open("data_2.txt") as f: 
    for line in f:
        myList.append(tuple(line.rstrip().split()))
dic = {}
for index,ele in enumerate(myList):
    key=index+1
    val_2=float(ele[1])
    val_3=float(ele[2])
    dic.update({key: (ele[0],val_2,val_3)})
    for i in range(len(dic)):
            power= 5//(val_2)
            P=pow(0.5,power)
            cal_grams=val_3*P
            if cal_grams<100:
                outfile = open("Element_Shortage_List.txt","w")           
                outfile.write(
                str(ele) + "   " + str(float(cal_grams)) + "\n")
                outfile.close()

如果你在 python3 上,你应该检查 f 字符串。 这很简单。一个例子是:

outfile.write(f"{ele}    {float(cal_grams)}\n")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...