将字符串输出到终端,否则以正确的格式输出

outputting a string to terminal and otherwise in a correct format

我有一个字符串,我想输出到终端,然后写入一个文件。我已经在我的代码中做到了这一点,但我想更改它的格式。

通常情况下,任何打印语句都应该发生这种情况:

 x = scatter
 print (x)

并输出到终端屏幕

 scatter

我的字符串格式如下

n = 1
x = 'scatter -n', n

将此语句打印到终端给出....

('scatter -n', 1)

我想要做的是能够打印一个字符串,其中它包含文本字符串的多个元素,后跟一个在程序前面声明的变量,如上。我不确定如何设置语法,以便当我打印到终端时字符串将如下所示:

scatter -n 1

此处提供的文本是我需要打印的完整字符串的一个较小示例。在其中我有大量的变量,这些变量是在我的程序中定义的,但在这里我将把它们放在这个 post 上,因为它主要是我坚持的语法问题。我需要写的完整字符串如下:

test = '"scatter -n',n,'-A ',A,' -g ',g,' -t ',stime,' -i "-M',Mbu,' -rm ',rm,' -R ',R,' -v ',vrel,' -t -q',qout,' -a ',aoutu,' -e ',eout,' -r1 ',r1,' -t1 -q ',qin,' -a ',ainu,' -e ',ein,' -r1 ',r1,' -r2 ',r2,'"'

我在这里格式化字符串的方式是我设法让它在当前迭代的程序中正常工作的唯一方法。

任何输入将不胜感激。

为什么要将序列定义为隐式元组?

如果您想将其保留为 list/tuple/whatever collection,请考虑:

' '.join([str(i) for i in test])

提示:我使用 str() 来说明最终出现在您的变量列表中的所有 non-string 值。

否则,如果变量的数量是固定的,您可以只使用常规字符串格式'%s, ...' % (val, ...)

嗨,你是这个意思吗?

test= test.replace(",", " ")
print(x)
('scatter -n', 1)

这是预期的行为,因为它声明为变量 x 中元素的元组。 python 按原样打印。

print(', '.join(str(i) for i in x))
scatter -n, 1

您实际上是在寻找join()方法。

x = 'scatter -n', n

您代码中的这一行不是串联,而是打包一个元组。这就是括号出现在输出中的原因。此外,无论如何,如果不先进行转换,就无法将 int 类型连接到字符串上。

相反,您可以使用此格式进行字符串转换和连接:

x = "scatter"
y = "-n"
z = 1
cmd = "{} {} {}".format(x, y, z)
print cmd

打印

scatter -n 1