1

一連の行を 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])すべての文字列から 1 つの文字列だけが書き込まれます (ただし、括弧なしで書き込みます -->[ ]<--)。

7行か8行書きたいです。私はこのコードに頭を悩ませました。

ありがとうございました。

4

2 に答える 2

1

ファイルに書き込まれる文字列は、print(row_test) したときと同じです - リストのリストとして。

そのために join を使用して、次のような各行に大きな文字列を作成できます。

row_test+= ','.join(scris) + '\n'
于 2012-11-27T17:30:20.223 に答える
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_listsome_item

呼び出すsome_list.extend(some_item)と、 の最後に結合 します。がリストでない場合、これはエラーになります。some_itemsome_listsome_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)
于 2012-11-27T17:24:06.403 に答える