2014-04-10 2 views
1

형식으로 CSV 파일에 행을 추가하려고합니다. "이름, 가치".CSV 파일에 행 추가 - TypeError : 터플이 아닌 str이어야합니다.

다음
Japanese Yen,169.948 
US Dollar,1.67 
Pound Sterling,1 
Euro,5.5 

CSV 파일에 행을 추가하는 책임을지고있는 것입니다 코드의 일부입니다 :

def add():   
    addCurrency = input("What currency would you like to add: ") 
    newRt = float(input("Please enter the new exchange rate from Pound Sterling: ")) 
    adding = str(addCurrency), str(newRt) 
    file = open('exchangeRate.csv', 'a') 
    file.write(adding) 
+0

이 것은 튜플'adding = str (addCurrency), str (newRt)'을 생성합니다.'str (addCurrency) + str (newRt)'를 추가하려고한다고 생각합니다. – EdChum

+0

이 문제는 형식 "name, value"는 "nameValue"형식으로 프로그램의 다른 부분에는 유용하지 않습니다. 또한 문자열로 변환해야합니까? – user3165683

+0

그 경우에는 단지'= str (addCurrency) + ','+ str (newRt)'를 추가하면된다.이 경우 나는 – EdChum

답변

1

음이 요청하기 전에 몇 가지 테스트를 할 다음은 CSV 파일입니다. file.write(adding) 전에 print(adding)print(adding.__repr__())을 입력하면 adding 인스턴스의 파이썬 문제를 확인할 수 있습니다. 당신은 터플 인 ('Euro', '5.5')과 같은 것을 보았을 것입니다. 파이썬이 터플을 전달한 튜플 대신에 문자열이 필요하다고 불평하면 참. 먼저 문자열로 필요하기 때문에 newRt 입력을 플로팅으로 변환하지 마십시오. 여기에 필요한 것은 adding = ','.join((addCurrency, newRt)) + '\n' 또는 adding = '{},{}\n'.format(addCurrency, newRt) 또는 adding = addCurrency + ',' + newRt + '\n'입니다. 이렇게 질문하기 전에이 간단한 문제를 찾아 내려고 노력하십시오. 설명서의 자습서를 읽으십시오.

+0

이 에러가 수신되었다는 것을 알려줄 것이다. "(= add ','addCurrency, newRt)) TypeError : 시퀀스 항목 1 : str 인스턴스가 예상 됨, float가 발견되었습니다. "문자열에 캐스팅해야합니까? – user3165683

+0

내가 문제를 해결할까 걱정하지 마라. 문자열에 캐스팅되어야한다. – user3165683

+0

하, 나는 걱정하지 않았다! 모든 메소드가 괜찮 으면서 추가 값을 CSV에 추가 할 수있는 문자열로 만들 것을 제안했습니다. 끝에 필요한 개행 문자를 포함하도록 편집했습니다. 귀하의 통화 포 그램에 행운을 빈다. – SzieberthAdam

관련 문제