Python:'%2s'%在打破行后不起作用

时间:2015-07-18 17:36:33

标签: python numbers row spaces

我需要生成具有指定空格数的输出。它是一个包含一些列的表,用于将输出保存到文件中我使用行:

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

在任何列之间更改任意数量的空格都没有问题。唯一不起作用的是每隔一行中的第一个。它并不能说数字不是马赫。问题在于空间。

2 个答案:

答案 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'

谢谢,