TypeError:无法在python 2.7中连接'str'和'tuple'对象

时间:2019-12-30 15:56:29

标签: python

我在python中使用parameterized functions。我正在传递一些字符串值并访问其值。

这是我的函数定义的样子:

import constants

def print_error_table(self, header1, errormsg, icon):
        # for header1
        print(constants.GREEN)
        print(constants.REPORT_HEADER_ERR)
        print(constants.DATE_TIME)
        print(constants.SPACE)
        start = "|   |           "+constants.ICON_BOX

        header1_count = len(header1)

        available_space_for_first_part = 37 - (len(start) + header1_count)

        s = ""
        print(constants.REPORT_ROOF)
        print(constants.REPORT_COLUMNS)
        print(constants.REPORT_FLOOR)
        print(constants.REPORT_MIDDLE)
        print(start),
        print(" "+constants.NC+header1+constants.GREEN),

        for i in range(available_space_for_first_part):
             s += " "

        print(s),
        print("|"),

        # right part
        end = "                "
        end2 = "|    |"
        s2 = ""
        icon_count = len(icon)
        available_space_for_second_part = 31 - (len(end) + icon_count)
        print(end),
        print(icon),
        for i in range(available_space_for_second_part):
            s2 += " "
        print(s2),
        print(end2)

        print(constants.REPORT_SHORT_HORIZONTAL_LINE)
        print(constants.REPORT_MIDDLE_NO_MIDDLE_SEPTUM)


        # print(len(constants.SPACE)) # 84

        # print first 40 characters
        start = "|   |"
        print(start),
        s3 = ""

        for i in range(12):
            print(" "),
        print(constants.RED),
        msg = "1.) " + errormsg,
        print(""+msg), # this is where my error is getting

        print(constants.GREEN),

        # print(constants.RED+constants.ICON_CROSS+msg+constants.GREEN),

        for i in range(12, 57 - len(msg)-1):
            s3 += " "
        print(s3),
        print("|    |"),
        print("")
        print(constants.REPORT_MIDDLE_NO_MIDDLE_SEPTUM)
        print(constants.REPORT_MIDDLE)
        print(constants.REPORT_FLOOR)
        print(constants.REPORT_FOOTER)

这是我从中调用此函数的另一个python文件。

error_message = "\"etcd\" is impaired\n"
print_error_table(self, "ETCD", error_message, constants.ICON_CROSS)

我收到此错误:

  

print_error_table中的文件“ /home/jananath/Desktop/python-script/2/bitesizetrouble/report_error.py”,第57行       print(“” + msg),   TypeError:无法连接“ str”和“ tuple”对象

问题是我传递的值(即error_message)没有以string的形式传递,这是出于某种原因而更改的文本。

之所以这么说是因为,在上面的(第一个)命令中,它说的是print(""+str(msg)),而不是这个,当我尝试print(msg),时,它会给出一些奇怪的输出。

  

(`“ etcd”受损\ n',)

您可以看到两侧各有两个parenthesis。它来自何处?为什么我无法使用另一个字符串来确定要传递给函数的字符串(即print(""+str(msg))

更新:我正在使用,以停止print()打印新行。这就是我应该在python 2.7.5中做到的方式

1 个答案:

答案 0 :(得分:3)

您的代码中充满了逗号,您又在错误的位置放置了一个。

通过在字符串分配的末尾添加逗号来创建具有一个元素的元组。参见:

>>> foo = "bar"
>>> print(foo)
bar
>>> foo = "bar",
>>> print(foo)
('bar',)

我建议您从python.org(https://docs.python.org/3/tutorial/index.html)开始学习Python教程。说真的而且不要学习Python 2,仅此而已。认真地。