如何在Python

时间:2016-03-24 10:44:39

标签: python list

我试图让Python打印一个表格,其中包含我在.txt文件中输入的确切格式,如下所示:

1 2 3 4
5 6 7 8
9 11 12 13

到目前为止,这是我的代码:

f = input('Enter the file name: ')
infile = open(f, 'r')
contents = infile.readlines()
infile.close()
table = []

for line in range (len(contents)):
    rows = contents[line].strip().split(' ')
    table.append(rows)
print(table)

这是我在运行之后到目前为止所得到的,我不知道如何从这里继续。

[['1', '2', '3', '4'], ['5', '6', '7', '8'], ['9', '11', '12', '13']]

感谢。

3 个答案:

答案 0 :(得分:0)

这都是关于格式化的。如果你用英语解释你想要的东西,那么你会看到代码自然会跟随。

您希望在自己的行上打印每一行数据,每个元素用空格分隔:

def print_table(table):
    for row in table:
        print(' '.join(row))

调用此功能显示您的数据。

另一个快速解决方案是使用漂亮的打印库pprint

from pprint import pprint

...
pprint(table)

整个过程,经过优化以删除不必要的代码和复制:

def print_table(table):
    for row in table:
        print(' '.join(row))

def main():
    f = input('Enter the file name: ')

    table = []
    with open(f, 'r') as infile:
        for line in infile:
            row = line.strip().split(' ')
            table.append(row)

    print_table(table)

if __name__ == '__main__':
    main()

提示:

  • 使用with可以避免手动关闭文件并确保即使在异常情况下它也会关闭。
  • 无需将整个文件读入内存 - 只需使用for循环迭代文件对象本身的每一行。
  • 使用功能!

请注意,如果您想开始将数据用作数字,则需要在您阅读的每个元素上调用int - 它们目前都是字符串。您可以使用map函数轻松完成此操作:

row = map(int, line.strip().split(' '))

答案 1 :(得分:0)

请尝试以下代码:

f = input('Enter the file name: ')
infile = open(f, 'r')
contents = infile.readlines()
infile.close()
table = []

for line in range (len(contents)):
    rows = contents[line].strip().split(' ')
    table.append(rows)

for elem in table:
    print(*elem)

<强>输出:

1 2 3 4 
5 6 7 8 
9 11 12 13

答案 2 :(得分:-1)

试试这个而不是print(表格):

for line in table:
    wholeline = ""
    for i in line:
         wholeline += str(i)
    print(wholeline)