将子列表列表写入文件中,不带括号并用“;”分隔
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 的人根本不应该使用 map
或 filter
,因为它们在很大程度上是错误的解决方案。
【参考方案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]))
【讨论】:
以上是关于将子列表列表写入文件中,不带括号并用“;”分隔的主要内容,如果未能解决你的问题,请参考以下文章