2017-11-22 1 views
0

여러 목록을 반복하고 CSV 파일로 저장하여 스프레드 시트에서 열려고합니다. 첫 번째 목록에는 값이 추가됩니다. 열 1, 2 및 3, 두 번째 목록에 값을 4, 5, 6 열에 추가합니다. 대신 len (list 2)만큼의 목록 1 행을 가져온 다음 목록 2의 두 번째 줄 같은 것 등등. 목록 2는 정상적으로 인쇄 한 다음 목록 1의 두 번째 줄이 마침내 인쇄되면 다시 인쇄합니다. 바라기를 나는 이것을 충분히 잘 설명했다.파이썬 3.6. for 루프에서 여러 목록을 반복하고 DictWriter()를 사용하여 CSV 파일에 쓰는 방법

for a,b in itertools.product(range(len(ixl_card)), range(len(kal_card))): 
     writer.writerow({'Col 1': ixl_card[a], 
         'Col 2': ixl_price[a], 
         'Col 3': ixl_quantity[a], 
         'Col 4': kal_card[b], 
         'Col 5': kal_price[b], 
         'Col 6': kal_quantity[b] 
         }) 

가 당신의 도움이 많이 주시면 감사하겠습니다 ""

ixl_file = open('ixalan.txt', 'r') 
ixl_card = [] 
ixl_price = [] 
ixl_quantity = [] 
for line in ixl_file: 
    info = line.split("|") 
    ixl_card.append(info[0]) 
    ixl_price.append(info[1]) 
    ixl_quantity.append(info[2]) 
ixl_file.close() 

kal_file = open('kaladesh.txt', 'r') 
kal_card = [] 
kal_price = [] 
kal_quantity = [] 
for line in kal_file: 
    info = line.split("|") 
    kal_card.append(info[0]) 
    kal_price.append(info[1]) 
    kal_quantity.append(info[2]) 
kal_file.close() 

with open('card_kingdom.csv', 'w', newline='') as ixl: 
     fieldnames = ['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6'] 
    writer = csv.DictWriter(ixl, fieldnames=fieldnames) 
    writer.writeheader() 

"" "내가 문제가 원하는 형식으로이 두 목록을 추가 할 데 어디 아래입니다!" 나머지 코드가 필요한 경우 알려 주시기 바랍니다. 감사!!

+2

두 개의 입력 파일 중 작은 샘플과 출력 파일의 모양이 도움이 될 것입니다. –

+0

itertools.product()가 작동하는 방식 때문에 결과가 나타납니다. 성취하려는 것에 대해 더 자세히 설명해 주시겠습니까? –

답변

0

당신의 모든 컬럼이 동일한 순서로 나타나는이 그냥 일반 CSV 작가를 사용하여 수행 할 수 있습니다하십시오 |에 대한 지정하여

import csv  

with open('ixalan.txt', newline='') as f_ixalan: 
    ixalan = list(csv.reader(f_ixalan, delimiter='|')) 

with open('kaladesh.txt', newline='') as f_kaladesh: 
    kaladesh = list(csv.reader(f_kaladesh, delimiter='|')) 

with open('card_kingdom.csv', 'w', newline='') as f_output: 
    csv_output = csv.writer(f_output) 
    csv_output.writerow(['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6']) 

    for p1, p2 in zip(ixalan, kaladesh): 
     csv_output.writerow(p1 + p2) 

은 또한 당신이 개 .txt 파일이 csv.reader() 사용하여 읽을 수 있습니다 구분 기호. zip()을 사용하면 두 개의 입력 목록 각각에서 한 행을 가져와 결합하여 출력 CSV에 쓸 수 있습니다.

+0

대단히 고마워! 이것은 매우 유용했습니다. 즐거운 휴일! – juju

관련 문제