【问题标题】:Troubleshoot needed :TypeError: can only concatenate tuple (not "str") to tuple需要故障排除:TypeError:只能将元组(不是“str”)连接到元组
【发布时间】:2021-06-15 11:32:37
【问题描述】:

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

谁能指出我们正确的方向。

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()

【问题讨论】:

  • 您还需要至少显示一部分data_2.txt - 否则很难提供帮助。
  • 我不知道文件的内容,但尝试替换这一行:outfile.write(str(ele)+ " " + float(cal_grams) + "\n")
  • ele 是一个元组,你认为(1,1) + "string" 会做什么?
  • myList 是一个元组列表。在 for 循环中,您将此类元组放入 ele 中。所以,在你写ele+ " " 的地方,你连接了一个元组和一个用空格填充的字符串。因此错误。阅读回溯,不仅仅是消息,它会明确地告诉你发生了什么。
  • 谢谢大家。现在当我们执行 outfile.write(str(ele)+ " "+str(cal_grams)+"\n")

标签: python tuples typeerror writetofile


【解决方案1】:

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

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

然后这一行:

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

成为

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

更多关于 f-strings 的详细信息:https://www.python.org/dev/peps/pep-0498/

【讨论】:

    【解决方案2】:

    感谢大家,尤其是 Menno Holscher。

    它最终会在我们读取时读取

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

    【讨论】:

      【解决方案3】:

      错误告诉你:你不能添加一个元组和一个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")
      

      【讨论】:

      • 是的兄弟 (str(ele)+ " "+str(cal_grams)+"\n") 设法修复它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-13
      • 2022-01-11
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多