2017-09-14 2 views
0

나는 다음과 같은 파일 및 코드를 가지고 있지만, 동일한 방법으로 두 번째 코드 단편과 동일한 방법으로 오류가 발생합니다.csv 파일 열을 읽는 중 이상한 현상

작동 코드

def test(): 
    with open('test.txt','r') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      print(row[0]) #this is column 1 
      answer=input("Answer?>>") 
      if answer==row[1]: #this is column 2 
       print("Yes") 
      else: 
       print("No") 

파일 내용

a,1 
b,2 
c,3 

는 올바른 작업 출력 그러나

>>> test() 
a 
Answer?>>1 
Yes 
b 
Answer?>>2 
Yes 
c 
Answer?>> 

는, 다음 코드는 작동하지 않습니다

def round(): 
    print("===Summary===") 
    with open('eventinfo.txt','r',newline="") as f: 
     reader=csv.reader(f) 
     for row in reader: 
      print(row[0]) 
,451,515,

파일 내용 : (파일에 쓰는 동안 기록의 추가 라인이 생성 된 것으로 나타납니다)

1,Techhamper,9,9,9,9,9,27 

1,Moosecream,8,8,8,8,8,24 

1,BizTech,6,6,6,6,6,18 

1,Pigacheepot,1,1,1,1,1,3 

2,Techhamper,1,1,1,1,1,3 

2,Moosecream,2,2,2,2,2,6 

오류 :

print(row[0]) 
IndexError: list index out of range 

다음과 같이 파일에 기록하는 코드는 다음과 같습니다

답변을
with open("eventinfo.txt","a") as fo: 
      writer=csv.writer(fo) 
      writer.writerow([round,inventor,i1,i2,i3,i4,i5,totalscore]) 

, 나는 기뻐할 것입니다 경우 :

  1. 파일에서 읽는 코드에서 오류의 솔루션/수정

  2. 또한, 추가하거나 재 작성하는 가장 좋은 방법은 무엇입니까 (어떻게 가장 효과적으로 새로운 라인 문자를 제거하기 위해) 내 ' 쓰기 '코드를 사용하여 첫 번째 장소에서 파일 내용을 더 효율적으로 만들 수 있습니다 (각 레코드 사이에 줄 바꿈이없는 첫 번째 내용과 같음). 하지만, 나는 빈 줄을 만들 것입니다 코드를 작성에서 아무것도 표시되지 않습니다

    for row in reader: 
        if len(row) > 0: 
         print(row[0]) 
    

    : 사전에

덕분에

답변

1

당신은 row의 길이를 확인하여 빈 줄을 건너 뛸 수 있습니다 , 그래서 나는 그것을 고치는 방법을 모른다. 읽고있는 것과 동일한 운영 체제에서 작성하고 있습니까? 그렇지 않은 경우 줄 끝 규칙의 차이가 원인 일 수 있습니다.

개행 문제가있는 경우 newline="" 대신 newline=None (기본값)을 사용하여 판독기 코드를 해결할 수 있습니다.

+0

독자 코드에서 newline = ""을 제거하고 newline = None을 시도했지만 어느 것도 작동하지 않았습니다 – MissComputing

+0

빈 줄이 어떻게 생성되는지 볼 수 없습니다. 아니, 불행하게도 나는 단지 같은 운영체제를 사용하고있다. – MissComputing

+0

'totalscore'가 개행으로 끝날 수 있습니까? – Barmar

관련 문제