Python csv写入列表

时间:2012-11-27 17:17:46

标签: python list csv

我有一个代码将一堆行写入csv文件。它写出我想要的东西,但......它在每一列中插入括号...... 代码是:

    root_text_csv = "C:/Users/s/Desktop/text/knife"+numarul_folderelor+".csv"
    fisier_text_knife = csv.writer(open(root_text_csv,'wb'))
    row_test = []
    for filenames in os.listdir(foldere_prrra):
        knife = filenames.replace("<SP>", " ").replace(".sys", "")
        test = ['cut '+knife+' off for fuged,', 'cut '+knife+' off,', 'cut '+knife+' fool alabala,', 'cut '+knife+' nieh,', 'prrra '+knife+' alabala,',
                'cut '+knife+' fuged streaming,', 'cut '+knife+' alabala fuged,', 'cut '+knife+' off alabala,', 'prrra '+knife+' fool alabala,',
                'cut '+knife+' off fuged,', 'prrra '+knife+' niether alabala,', 'cut off '+knife+' for fuged,' 'cut '+knife+' fuged fool alabala,',
                'cut '+knife+' off niether,', 'where to cut '+knife+',', ''+knife+' fool alabala off,', 'steel '+knife+' off fuged,', 'cut '+knife+' fuged niether,',
                ''+knife+' fool alabala off,', 'fuged streaming '+knife+',', 'cut '+knife+' niether,', 'cut '+knife+' fuged,', 'red '+knife+' off,', ''+knife+' off,',
                'red '+knife+',', 'cut '+knife+',', ''+knife+' fuged,', 'fuged '+knife+',', ''+knife+' off,', 'off '+knife+',', ''+knife+',']
        random.shuffle(test)
        scris = [x for x in test if len(x) <= 30]
        row_test.append(scris) #row_test.append(scris[0])
    fisier_text_knife.writerow(row_test)

如果我用row_test.append(scris[0:7])替换row_test.append(scris[0]),它只会将一个字符串全部写掉(但是不带括号写入 - >&gt; []&lt; - )。

我想写7或8行。我在这段代码上浪费了我的大脑。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

发生这种情况的原因是因为scris是一个列表。

而不是:

row_test.append(scris[0:7])

这样做:

row_test += scris[0:7]

这也有效(见下面的评论):

row_test.extend(scris[0:7])

如果它仍然没有意义打开控制台并输入下面的示例内容。每次更改l时都会将其打印出来。

以下示例应显示其工作原理:

l = [1,2,3]          #    l = [1,2,3]
l.extend([4,5])      #now l = [1,2,3,4,5]
l.append([6,7])      #now l = [1,2,3,4,5,[6,7]]
l.extend('hi there') #raises an exception

当您致电some_list.append(some_item)时,它会将some_item 置于 some_list内。因此,如果some_item也是一个列表,那么您将在列表中找到列表。

当您致电some_list.extend(some_item)时,加入 some_itemsome_list的末尾。因此,如果some_item不是列表,则会出错。

编辑我想我现在看到了你想要的东西......

所以给定像[['1','2','3'],['4','5','6'],['7','8','9']]这样的列表你希望csv看起来像这样:123,456,789,对吗?

而不是:

fisier_text_knife.writerow(row_test)

试试这个:

csv_friendly = [''.join(l) for l in row_test]
fisier_text_knife.writerow(csv_friendly)

答案 1 :(得分:1)

将写入文件的字符串与打印时的字符串相同(row_test) - 作为列表清单。

您可以使用join为每行创建一个大字符串,例如:

row_test+= ','.join(scris) + '\n'