Python:子列表列表,编写没有括号的子列表

时间:2013-11-06 23:09:59

标签: python list csv brackets

我有一个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中行的长度。

这会修改你的答案多少?

5 个答案:

答案 0 :(得分:6)

首先,答案是:

file.write(','.join(map(repr, List))

由于多种原因,您的实际代码无法写出您声称的内容:

  • 文件的write方法会为您提供TypeError,如果您给它一个列表,而不是打印出来。您必须在列表中拨打strrepr即可获得write的内容。
  • 在列表中调用strrepr会在逗号后面添加空格以及括号。
  • 您的代码中至少有一个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)

您可以根据需要编辑此代码,这就是我的榜样!