2012-11-27 5 views
1

CSV 파일에 일련의 줄을 쓰는 코드가 있습니다. 그것은 내가 원하는 것을 기록하지만 ... 그것은 코드는 ... 각 열에 괄호를 삽입 :Python csv write list

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])row_test.append(scris[0:7])를 교체하는 경우가 모두 떨어져 하나의 문자열을 기록합니다 (그러나 그것을 기록 대괄호없이 -> [] < -).

7 줄 또는 8 줄을 쓰고 싶습니다. 나는이 코드에서 내 머리를 낭비했다.

감사합니다.

답변

1

이 이유는 가 목록이기 때문입니다.

대신 :

row_test.append(scris[0:7]) 

것은 오히려 이렇게 :

row_test += scris[0:7] 

이 너무 작동합니다 (아래에 의견을 참조) :

row_test.extend(scris[0:7]) 

을 여전히 이해가 열려하지 않는 경우 콘솔과 입력 예제 아래 물건. 변경할 때마다 l 인쇄하십시오. 이 작품 왜

아래의 예제를 표시해야합니다 : 당신이 some_list.append(some_item)를 호출 할 때이some_list 내부 some_item을두고

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_item도 목록이면 목록에 있습니다. 당신이 호출 할 때

some_list.extend(some_item)some_list의 끝에some_item을 결합한다. 따라서 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) 
+3

'.extend :

각 라인에 대한 큰 문자열 같은 것을 만들이 위해 가입 할 수 있습니다. for 루프 앞의'row_test = []'대신에'row_test + = scris [0 : 7]'입니까? – geoffspear

+0

?나는 그것을 할 수 없다 ... row_test = []는 colomns를 쓰는 것이다. –

1

파일에 기록 될 문자열은 (row_test) 인쇄 할 때와 동일한 - 목록으로 을 기울기.()`슬라이스`+ = '보다 더 나은 것

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

: (이해할 수 없네 ... –

+0

정확히 목록의 목록 ... 저 괄호없이 그 목록을 어떻게 써도 될까요? –