我需要生成具有指定空格数的输出。它是一个包含一些列的表,用于将输出保存到文件中我使用行:
save_line = ('%8s' % label[each_atom + str(int(k) + 1)] +
'%10s' % str(int(i) + 1) +
'\n' +
'%2s' % x[i] +
'%20s' % y[i] +
'%20s' %z[i] +
'\n')
但'%2s'%x[i]
在输出中不会产生两个空格。我不能在那里使用+" "+
。任何想法我能做什么?
以下是我的代码输出:
C1 1
2.482705 1.332897 13.175184
最后在这里我的输出应该是什么样的(这是来自另一个输入的例子,我的任务是基于此产生我的):
C1 1
2.42416980 4.14117720 4.71196000
在任何列之间更改任意数量的空格都没有问题。唯一不起作用的是每隔一行中的第一个。它并不能说数字不是马赫。问题在于空间。
答案 0 :(得分:0)
请合并这些模板
save_line = "%8s%10s\n%2s%20s%20s\n" % (
label[each_atom + str(int(k) + 1)],
str(int(i) + 1),
x[i],
y[i],
z[i])
%运算符的右侧应该是元组。你的价值都不是元组(从我能看到的),这是获得你不期望的输出的好方法。如果您只想格式化一个项目:
print "Hello %s!" % ("world",)
注意尾随的逗号。这是因为
("World")
是一个字符串(在它周围有括号),而
("World",)
是一个包含一个项目的元组。
答案 1 :(得分:0)
但是'%2s'%x [i]在输出中不会产生两个空格。我不能用+" " +那里。有什么想法我可以做什么?
为什么呢? %之后的数字是新字符串字段的大小。
print '%3s' % 'why'
>>why
print '%4s' % 'why'
>> why
大小为4个符号,为什么' string ='为什么&#39 ;. 如果您使用'%4s'
,则只有1个左侧空格用于3个字母的单词此外,您可以使用' - '。 如果你的字符串是' s并且你使用'% - 2s',你会得到新的字符串',在你的字符串后面有1个空格。您也可以在字符串格式化任务中使用它。
>>> print "%-5s%s" % ("N", "Q")
N Q
>>> print "%5s%s" % ("N", "Q")
NQ
>>> print "%5s%5s" % ("N", "Q")
N Q
>>> '%.1s' % 'Hello!'
'H'
>>> '%.2s' % 'Hello!'
'He'
你可以使用元组值:
>>> '%.*s' % (2, 'Hello!')
'He'
谢谢,