TypeError:无法在Python2.7中连接“str”和“tuple”对象

2024-09-25 02:34:58 发布

您现在位置: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)

我得到一个错误:

File "/home/jananath/Desktop/python-script/2/bitesizetrouble/report_error.py", line 57, in print_error_table print(""+msg), TypeError: cannot concatenate 'str' and 'tuple' objects

问题是我传递的值(即error_message)不是作为string传递的,因为某种原因它是一种修改过的文本。你知道吗

我这样说是因为,在上面的(第一个)命令中,它说的是print(""+str(msg)),而不是这个,当我尝试print(msg),时,它会给出一些奇怪的输出,比如这样。你知道吗

(`"etcd" is impaired\n',)

你可以看到两边各有两个parenthesis。它来自哪里?为什么我不能将传递给函数的字符串与另一个字符串(即print(""+str(msg))

更新:我正在使用,停止print()打印新行。在python2.7.5中,我应该这样做


Tags: inreportmiddleforlencountmsgerror
1条回答
网友
1楼 · 发布于 2024-09-25 02:34:58

你的代码充满了逗号,你又把一个放错了地方。你知道吗

通过在字符串赋值的末尾添加逗号,可以创建一个包含一个元素的元组。请参见:

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

我建议您从python.org网站(https://docs.python.org/3/tutorial/index.html)。说真的。不要再学python2了。说真的。你知道吗

相关问题 更多 >