2017-04-30 3 views
1

두 번째 열에 문장과 감정 상태가있는 큰 데이터 세트가 있습니다. 난 numpy 배열로 그들을 읽을 수있는 코드를 개발했습니다. 그렇다면 문장의 감정이 중립적이면 진정한 것으로 돌아가고 그렇지 않으면 거짓을 돌려 주어야합니다. if else 조건에 의해 반환 된 각 결과는 CSV 파일로 작성해야합니다. 그러나 여기에서는 for 루프의 각 반복에 의해 반환되는 모든 결과를 작성하는 대신 CSV 파일에 결과를 한 번만 작성합니다. 다음은 지금까지 가지고있는 코드입니다.파이썬 CSV 파일에 문자열 값 쓰기

import csv 
import numpy as np 

with open('Book1.csv', encoding='utf8') as csvfile: 
reader = csv.DictReader(csvfile) 

for row in reader: 
    text=(row['text']) 
    emotion=(row['emotion']) 
    my_list=(text, emotion) 
    my_array = np.asarray(my_list) 

    make_array = (text, "neutral") 
    num_array = np.asarray(make_array) 

    if np.array_equal(my_array,num_array): 

     with open('test.csv', 'w') as csvfile: 
      fieldnames = ['result'] 
      writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

      writer.writeheader() 
      writer.writerow({'result': 'True'}) 

    else: 

     with open('test.csv', 'w') as csvfile: 
      fieldnames = ['result'] 
      writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

      writer.writeheader() 
      writer.writerow({'result': 'False'})` 

어딘가 잘못되었을 수 있습니다. 누가 좀 도와주세요.

+1

'open ('test.csv', 'w')는 호출 될 때마다 파일을 덮어 씁니다. 추가 모드'open ('test.csv', 'a')'에서 열거 나 더 나은 방법으로 루프 앞에서 한 번만 열어야합니다. 또한'with open ('Book1.csv', encoding = 'utf8')의 코드는 csvfile :'으로 들여 쓰기해야합니다. – Craig

+1

와우, book1.csv의 모든 행에 대해 test.csv를 열고 작성하고 닫는 중입니다. 그냥 필수 레코드 사전을 만들고 마지막에 쓰기를 수행합니다. – Pushkr

+0

어쨌든 나는 진실하고 틀린 가치를 세고 싶다. 그보다 다른 방법이 있다면 나는 그것을 따른다. 말해줘. –

답변

2

의 파일을 이 아닌으로 열어야합니다. 문제가 올바르게 이해되면으로 작성하십시오.

with open('test.csv', 'a') as csvfile: 
    fieldnames = ['result'] 
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 

    writer.writeheader() 
    writer.writerow({'result': 'True'}) 

또한 if/else 조건부 블록에서 코드를 반복합니다. { 'result': 'True'} 또는 { 'result': 'False'}와 같은 변수 result_dict을 작성한 다음 if/else 블록 외부에 작성하여 파일을 열 필요가 없습니다. 조건부 블록. 이것이 명확하지 않은 경우 알려주십시오.

+0

나는 당신의 코드를 시도했다. 열 이름도 반복해서 쓰게됩니다. 어떻게 해결할 수 있습니까? –

+0

예하시기 바랍니다. 네가 한 말은 분명치 않다. 나에게 어떻게하는지 알려줘. –

+0

여기서 열 이름으로 무엇을 의미합니까? –