我在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中做到的方式
答案 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,仅此而已。认真地。