2017-02-27 1 views
1

현재 리더 보드를 사용하려고합니다. 리더 보드는 점수 만 저장합니다. 점수를 CSV 파일에 쓰려고합니다. https://gyazo.com/19c9007827498fb5cf847535167d5841Python 2.7 CSV 쓰기 형식이 올바르지 않습니다.

I, 그것은 문자열로 변환되는 점과 관련이있다 생각하지만 때 내가 :

if col: 
    with open("rec_Scores.csv", "a") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(str(curr_score) + "\n") 
    crashed = True 

이 실행되는 CSV 파일은 다음과 같이 끝 : 여기에 쓰기에 대한 내 코드입니다 점수를 변환하지 않는 다음과 같은 에러가 발생합니다

Traceback (most recent call last): 
    File "C:\Users\Harry\Desktop\Desktop\Computing Project\Galaxian.py", line 173, in <module> 
    w.writerow(curr_score + "\n") 
TypeError: unsupported operand type(s) for +: 'int' and 'str' 

이것은 아마도 작은 바보 같은 실수를했지만 어떤 도움이 많이 이해할 수 있도록 내가 파이썬에서 CSV 파일로 작업 한 것은 이번이 처음이다. 감사.

+0

그냥 제거'+ "\ n"'및 다시 시도하십시오. – roganjosh

답변

3

직접 줄 바꿈 (\n)을 추가하지 않아도됩니다. csv.writer이 대신 해드립니다. 파이썬에서 문자열 (당신이 for char in "abc":을 말할 수) 반복 가능하기 때문에

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow(curr_score) 
    crashed = True 

당신이 문자열로 curr_score를 변환 할 때 당신이 얻을 이상한 결과입니다. writerow은 iterable을 허용하도록 설정되어 iterable의 각 구성원에 대해 행에 하나의 필드를 만듭니다. 그래서 writerow은 각각 하나의 문자를 포함하는 여러 열을 원한다고 생각하고 있습니다. 당신이 행의 유일한 요소로 문자열을 추가하려면

, 다른 반복자, 예를 들어, 튜플로 묶해야합니다

if col: 
    with open("rec_Scores.csv", "ab") as f: 
     w = csv.writer(f, delimiter = ",") 
     w.writerow((str(curr_score),)) #note the extra brackets and comma 
    crashed = True 
+0

이 코드를 시도했지만 숫자의 간격을 정렬했지만 각 행 사이에 여전히 간격이 있습니다. https://gyazo.com/f308088038cc214588918c7aba40cb9f 왜 이런 일이 일어나고 있는지 알고 싶다면이 문제에 대해 저를 도울 수 있습니까? 숫자가 모두 간격을두고있는 이유를 설명해 주셔서 감사합니다. –

+0

@HarryBeggs 게시 한 코드는 하나의 값만 씁니다. 두 번째 숫자도 쓰는 코드를 게시하십시오. – RoadieRich

+0

그 스크린 샷은 두 번 뛰었고 다른 기록은 없습니다. 감사합니다 편집 : 그냥 세 번째 시간을 실행하고 거기에 여전히 공간이 발생합니다. –

관련 문제