我的列表产生以下输出:(运行Python 3.4)
('MSG1', 3030)
('MEMORYSPACE', 3039)
('NEWLINE', 3040)
('NEG48', 3041)
有没有办法让所有数字都像列一样排列?谢谢。 我的代码是一个简单的打印声明:
for element in data:
print (element)
答案 0 :(得分:5)
你可以根据最长的词来证明:
longest = max([len(x[0]) for x in data])
for j in data:
a = j[0].ljust(longest)
b = str(j[1])
print(' '.join([a, b]))
这是输出:
MSG1 3030
MEMORYSPACE 3039
NEWLINE 3040
NEG48 3041
答案 1 :(得分:3)
您是否尝试过format?
max_len = max([len(x[0]) for x in data])
for element in data:
print '{value0:{width0}} {value1}'.format(value0=element[0],
width0=max_len,
value1=element[1])
示例输出:
MSG1 3030
MEMORYSPACE 3039
NEWLINE 3040
NEG48 3041
您还可以通过将>
添加到格式说明符来进行右对齐:
...
print '{value0:>{width0}} {value1}'.format(
...
产地:
MSG1 3030
MEMORYSPACE 3039
NEWLINE 3040
NEG48 3041
答案 2 :(得分:0)
您可以使用'\t'
:
for element in data:
print str(element[0])+'\t'+str(element[1])
MSG1 3030
MEMORYSPACE 3039
NEWLINE 3040
NEG48 3041
不幸的是,因为您的第一个元素有时会更长,请先尝试打印数字:
for element in data:
print str(element[1])+'\t'+str(element[0])
3030 MSG1
3039 MEMORYSPACE
3040 NEWLINE
3041 NEG48
答案 3 :(得分:0)
您可以尝试以下方法。由于第二个元素是整数值,因此您需要在打印前将其转换为string
类型。
>>> for x,y in data:
print(x+"\t"+str(y))
MSG1 3030
MEMORYSPACE 3039
答案 4 :(得分:0)
如果可能的话,我会先打印这个号码:
for i in lst:
print i[1],'\t',i[0]