Python-如何将数组写入文本文件?

Python-如何将数组写入文本文件?,python,arrays,file,text,Python,Arrays,File,Text,我有两个数组,它们是每分钟从网页抓取生成的。下面有两个。如何将它们放入文本文件中?我希望每个数组占用一行,我希望它们保留括号和逗号。我没有发现关于这个的其他话题有什么帮助 [('76,433', '15.025'), ('99,714', '15.023'), ('44,236', '15.010'), ('718,725', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('15', '15.000'), ('

我有两个数组,它们是每分钟从网页抓取生成的。下面有两个。如何将它们放入文本文件中?我希望每个数组占用一行,我希望它们保留括号和逗号。我没有发现关于这个的其他话题有什么帮助

[('76,433', '15.025'), ('99,714', '15.023'), ('44,236', '15.010'), ('718,725', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('60', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000'), ('30', '15.000'), ('60', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000')]

[('18,622', '15.027'), ('334', '15.029'), ('3,240', '15.032'), ('11,354', '15.032'), ('13,651', '15.033'), ('96', '15.041'), ('1,997', '15.051'), ('1,760', '15.051'), ('500', '15.052'), ('16,000', '15.053'), ('272', '15.091'), ('3,834', '15.097'), ('8', '15.125'), ('634', '15.141'), ('794', '15.143'), ('528', '15.149'), ('220', '15.150'), ('94', '15.159'), ('91', '15.164')]

您可以将其转换为str,然后写入文件: 演示:

f = open('your_file', 'w')
a = ['1', '2', '3']
f.write(str(a)+"\n")
回读时,您可以使用
ast.literal\u eval

import ast
f = open("your_file")
for x in f:
    x = ast.literal_eval(x.strip())
    # now do your stuff

尝试像这样使用
repr
函数,它将保持阵列结构完整:

v = [('76,433', '15.025'), ('99,714', '15.023'), ('44,236', '15.010'), ('718,725', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('60', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000'), ('30', '15.000'), ('60', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000')]
f.write(repr(v))

阅读更多信息。

考虑到您希望Rbx.Lua脚本使用该文件,最好使用JSON

repr
可能会生成一行,但您需要自己在Lua中解析它。也许不太难,但如果您想要交换其他数据类型,则需要修改Lua代码。您还可能会发现,
repr
并不总能给您提供有用的东西

使用JSON很容易:

Python:

import json

l = [('76,433', '15.025'), ('99,714', '15.023'), ('44,236', '15.010'), ('718,725', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('15', '15.000'), ('60', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000'), ('30', '15.000'), ('60', '15.000'), ('30', '15.000'), ('30', '15.000'), ('15', '15.000'), ('30', '15.000')]

with open('l.json', 'w') as outfile:
    json.dump(l, outfile)


有关Rbx.Lua端,请参见;您可以使用
DecodeJSON()
转换为Lua表。

为什么它们是数组很重要?您可以将它们字符串化,并将它们像其他文本一样写入文本文件。它们将被另一台运行Rbx.Lua的服务器访问,因此我希望它们被组织起来,以便其他服务器更容易使用这些数字。我希望它们保留括号和逗号。我还需要他们在一条线上。感谢您的回复。@GShocked不会丢失任何内容。请尝试一下,repr会保留所有内容并将其放在一行中。@GShocked:您可以将其放在一行中,而不是
repr()
。换行符(
'\n'
)不能放在json字符串中,因此您可以始终以单行形式编写json文档(换行符将被转义:
r'\n'
)。但如果使用
确保ascii=False
(默认值为
确保ascii=True
,则应小心使用Unicode换行符,例如(
'\u2028'
),这样就不会出现问题).btw,要写入文件,您可以直接传递对象:
json.dump(l,outfile)
而不是创建中间字符串。@J.F.Sebastian:谢谢……我忘记了
dump()
@mhawke:谢谢您的帮助。我明天将使用json(现在是晚上11:40).与此同时,我正在24小时运行我的程序,每分钟都在录音,这样我就可以知道利率的一般高点和低点是什么时候。我还会尝试
dump()
,如果我明天能让它工作,我会将你的答案设置为最佳答案。
$ cat l.json
[["76,433", "15.025"], ["99,714", "15.023"], ["44,236", "15.010"], ["718,725", "15.000"], ["30", "15.000"], ["30", "15.000"], ["15", "15.000"], ["15", "15.000"], ["15", "15.000"], ["15", "15.000"], ["60", "15.000"], ["30", "15.000"], ["15", "15.000"], ["30", "15.000"], ["30", "15.000"], ["60", "15.000"], ["30", "15.000"], ["30", "15.000"], ["15", "15.000"], ["30", "15.000"]]