我有一个x值很长的List。该列表分为不同长度的子列表。然后,我将这些子列表写入输出文件。有没有方法打印没有括号的子列表。
编辑为clarfiy:
实际列表是300个子列表,其中包含12250个元素,并随着我运行的每个senario而变化。显然,这是简化的。让我改变一些事情,看看是否会改变答案。
即
List=[[1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11, 12, 15]]
输出为:
[1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11, 12, 15]
但我想要
1, 2, 3
4, 5, 6, 7
8, 9, 10, 11, 12, 15
我希望这个输出在一个新的变量中,比如ListMod,所以我可以在一个单独的函数中使用ListMod来编写一个文件。该文件还调用另外两个列表,Time和Size,其中Size指定ListMod中行的长度。
这会修改你的答案多少?
答案 0 :(得分:6)
首先,答案是:
file.write(','.join(map(repr, List))
由于多种原因,您的实际代码无法写出您声称的内容:
write
方法会为您提供TypeError
,如果您给它一个列表,而不是打印出来。您必须在列表中拨打str
或repr
即可获得write
的内容。str
或repr
会在逗号后面添加空格以及括号。SyntaxError
会阻止您进入那么远。所以,在我解释如何解决之前,我必须猜测你实际做了什么。也许是这样的:
file.write(str(List))
如果是这样,列表的__str__
方法是有效的:
'[' + ', '.join(map(repr, self)) + ']'
你想要这个没有括号而没有空格,所以它是:
','.join(map(repr, self))
答案 1 :(得分:2)
您的输出格式显示为CSV。如果实际数据与提供的示例一样简单,那么您可以使用python的csv writer:
import csv
with open('/tmp/myfile.txt', 'w') as f:
csv_writer = csv.writer(f)
csv_writer.writerows(List)
答案 2 :(得分:1)
如果您使用的是Python 3.x或2.6以上,并且不介意使用print
作为函数:
from __future__ import print_function # ignore if on py 3.x
for line in List:
print(*line, sep=',', file=file)
答案 3 :(得分:0)
print '\n'.join(','.join(map(str, x)) for x in List)
答案 4 :(得分:0)
我要做的是 - 将file1设置为拆分前的文本,(我的拆分是一个新行,因为它使我更容易阅读简单的文本文件),然后将file2设置为拆分后的文本。如果我这样做:
print(fd.read().split('\n')[:1])
它会像这样打印出来:
['(information)']
当您将信息用作目录时,这对我没有帮助。这里将打印没有括号的文本:
fd = open('examplefile.txt', 'r+')
print(fd.read().split('\n')[1-1])
fd = open('examplefile.txt', 'r+')
print(file2 = fd.read().split('\n')[2-3])
输出:
(information1)
(information2)
在同一模式下重新打开同一个文件时,此脚本可能看起来多余,但相信我并非如此。如果不这样做,它将不会在拆分后打印文本。让我告诉你,当你不这样做时会发生什么:
fd = open('examplefile.txt', 'r+')
print(fd.read().split('\n')[1-1])
print(file2 = fd.read().split('\n')[2-3])
输出:
(information1)
您可以根据需要编辑此代码,这就是我的榜样!