将子列表列表写入文件中,不带括号并用“;”分隔

Posted

技术标签:

【中文标题】将子列表列表写入文件中,不带括号并用“;”分隔【英文标题】:Writing list of sublists into file without brackets and separated with ";" 【发布时间】:2017-03-12 09:12:49 【问题描述】:

我是新来的(也在 python 中),如果我做错了什么,请告诉我。 我有一个小(我认为)问题: 我有一个子列表列表,其中所有变量 (x) 都是浮动的:

tab=[[x11,x12,x13],[x21,x22,x23]]

我想写入 *txt 文件,不带括号 [] 并用“;”分隔像这样:

x11;x12;x13

x21;x22;x23

我试着这样做:但我不知道下一步该怎么做。

tab=[[x11,x12,x13],[x21,x22,x23]]
result=open("result.txt","w")
result.write("\n".join(map(lambda x: str(x), tab)))
result.close()

非常感谢所有愿意帮助我的人。

【问题讨论】:

你忘了加入行,"\n".join(map(";".join, tab)) 旁注:map(lambda x: str(x), tab) 是一种愚蠢/缓慢的做法 map(str, tab)。如果您需要lambda 来使用map,只需使用列表推导式或生成器表达式即可;它们更 Pythonic,避免函数调用无论如何都会使它们更快。刚接触 Python 的人根本不应该使用 mapfilter,因为它们在很大程度上是错误的解决方案。 【参考方案1】:

您可以为此使用csv module:

import csv

with open("result.txt", "wb") as result:
    writer = csv.writer(result, delimiter=';')
    writer.writerows(tab)

csv.writer.writerows() method 获取列表列表,并为您将浮点值转换为字符串。

【讨论】:

【参考方案2】:

你应该使用这个:

result.write("\n".join([';'.join([str(x) for x in item]) for item in tab]))

或者,更简单一点:

result.write("\n".join([';'.join(map(str, item)) for item in tab]))

【讨论】:

以上是关于将子列表列表写入文件中,不带括号并用“;”分隔的主要内容,如果未能解决你的问题,请参考以下文章

Windows CLI:将列表通过管道传输到 awk 并用外部文件中的文本替换文本并写入 output.txt

python 如何将列表写入文件

Python:如何将列表列表写入文本文件?

Python,转置列表并写入 CSV 文件

使用不带引号的python csv writer

OutputStreamWriter 仅将一项写入文件