在python中格式化字符串输出

时间:2014-02-28 15:16:29

标签: python string list join

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 7]
[1, 2, 3, 4, 6, 7]
[1, 2, 3, 5, 6, 7]
[1, 2, 4, 5, 6, 7]
[1, 3, 4, 5, 6, 7]
[2, 3, 4, 5, 6, 7]


1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7

我创建了一个程序,我试图以字符串格式而不是列表来获取输出。我认为在这种情况下,连接分隔符对我有用,但是在这种情况下我不知道在何处以及如何实现它。第二组输出是我想要的。

5 个答案:

答案 0 :(得分:4)

鉴于

data = [
    [1, 2, 3, 4, 5, 6],
    [1, 2, 3, 4, 5, 7],
    [1, 2, 3, 4, 6, 7],
    [1, 2, 3, 5, 6, 7],
    [1, 2, 4, 5, 6, 7],
    [1, 3, 4, 5, 6, 7],
    [2, 3, 4, 5, 6, 7],
    ]

for row in data:
    # apply str to each item in row using map.  join result with space.
    print ' '.join(map(str, row)) 

OUPUTS

1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7

答案 1 :(得分:3)

假设您的代码如下:

my_list=[ [ '1', '2', '3'],
  [ '1', '2', '3'],
  [ '1', '2', '3'] ]

这应该产生你想要的输出:

'\n'.join(''.join(line) for line in my_list)

如果你的元素不是字符串式的,你也需要转换它们:

'\n'.join(''.join(str(element) for element in line) for line in my_list)

答案 2 :(得分:1)

Join是一个String函数

l=[1,2,3,4,5,6,7]
print ' '.join(map(str,l))
# 1 2 3 4 5 6 7

答案 3 :(得分:1)

使用' '加入内部列表,使用'\n'

加入外部列表
In [125]: l
Out[125]: 
[[1, 2, 3, 4, 5, 6],
 [1, 2, 3, 4, 5, 7],
 [1, 2, 3, 4, 6, 7],
 [1, 2, 3, 5, 6, 7],
 [1, 2, 4, 5, 6, 7],
 [1, 3, 4, 5, 6, 7],
 [2, 3, 4, 5, 6, 7]]

In [126]: print '\n'.join(' '.join(map(str, i)) for i in l )
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7

答案 4 :(得分:1)

很大程度上取决于您可能会遇到的值范围。其他解决方案与发布的数据配合良好,但是如果还包括两位数值,则无法对齐所有内容,因为数字的字符串表示具有可变宽度。

在这种情况下,可以生成格式字符串以确保正确对齐,并且在处理数值时,这通常优于错位,这可能使人类读者难以轻松关联列的所有值。 / p>

假设所有数据行长度相同,以下代码是合适的模型。

data = [
    [11, 2, 3, 4, 5, 6],
    [1, 22, 3, 4, 5, 7],
    [1, 2, 33, 4, 6, 7],
    [1, 2, 3, 55, 6, 7],
    [1, 2, 4, 5, 66, 7],
    [1, 3, 4, 5, 6, 77],
    [22, 33, 44, 55, 66, 77],
    ]

rowlen = len(data[0])
item_format = "{:5d}"
format_string = " ".join(rowlen*[item_format])

for row in data:
    print format_string.format(*row)

输出

11     2     3     4     5     6
 1    22     3     4     5     7
 1     2    33     4     6     7
 1     2     3    55     6     7
 1     2     4     5    66     7
 1     3     4     5     6    77
22    33    44    55    66    77