关于文件:如何在python中的一列中写入所有数据?

how write all data in one column in python?

本问题已经有最佳答案,请猛点这里访问。

我有一个用python编写的程序,它产生一些文本,每行加一个数字。我想把它保存到一个文件中。以下是保存后的输出示例:

1
2
3
4
some text            6.2
some other text            7.6
some other text here too            6.8
some text            8

正如您所看到的,数字不在一列中。我在文本和数字之间使用了一些空格,但我想把所有的数字放在一列中。我该怎么做?使用文件写入方法还是其他方法?

编辑:

我想将这些数字放在一列中,以保存在文件中并使用write方法。如果我可以使用打印功能在监视器中显示数据,这很容易,但我想保存在一个文件中。其他类似的文章展示了如何在输出中显示而不是在文件中保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import json
import urllib.request as rq

def func():

    data=rq.urlopen('http://yts.to/api/v2/list_movies.json?quality=3d&limit=50')
    dataj=json.loads(data.read().decode())

    with open('yts.txt','w+') as f:
        f.write("Title                       Imdb rating
"
)
        f.write("---------------------------------------
"
)

        for i in range(len(dataj["data"]["movies"])):
            f.write(dataj["data"]["movies"][i]["title"]+'\t'+str(dataj["data"]["movies"][i]["rating"]))
            f.write("
"
)


if __name__=="__main__":
    func()


我不明白严格的"漂亮"格式的目的,但在需要的时候…

如果您有一个字符串和相关数字的列表(我将在字典中补充数据,但对于您的应用程序,应该采用相同的一般思想):

1
2
3
4
5
6
7
8
9
10
11
12
a = {'aaaaa':'8', 'bb':'1', 'ccccccccccccccccccccccc':'512', 'd':'9999', 'eeee':'0'}

maxwidth = max( [len(r) for r in a] )

for r in a:
    print(r + a[r].rjust(20 + maxwidth - len(r)))

aaaaa                                     8
eeee                                      0
ccccccccccccccccccccccc                 512
bb                                        1
d                                      9999


我对你的计划不太了解。但请检查:https://pypi.python.org/pypi/table

如果这是一个作业分配,并且您不能使用外部库,那么您可以将"表"单元格定义为一定的宽度。找到字符串长度,然后从单元格宽度中减去该长度,得到要填充的空格数(如果可以接受,并且单元格不能容纳字符串,则还可以添加省略号)。

但是,如果您试图在程序之间传递信息,则应该始终以固定的形式(分隔符等)保存数据。""漂亮的印刷品"只适用于人类。


尝试在文本和数字之间放置一个或多个\t选项卡,而不是空格。示例:some text\t6.2


如果标签是在运行时定义的,它可能需要一些您方面的考虑,或一个漂亮的打印机,我没有寻找,因为这不是经常出现在我。一般来说,如果使用制表符而不是空格,尽管这样做有助于使事物排列整齐,但必须确保所有内容都在最长标签的末尾加上制表符。