2016-07-22 2 views
0

혼합 데이터 형식으로 소수점 2 자리까지 플로트를 어떻게 포맷합니까? 테이블을 가져 와서 csv 파일에 행을 쓰고 있습니다. 내 데이터는 I가 6 소수 자릿수가 수레를 얻을, 위의 코드와문자열 및 부동 소수점을 사용하여 파이썬 CSV 포맷 및 쓰기

sql = 'select * from testTable' 
    c.execute(sql) 

    columnNames = list(map(lambda x: x[0], c.description)) 
    result = c.fetchall() 

    with open(outputCSVPath, 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerow(columnNames) 
     writer.writerows(result) 

(문자열, 문자열, 부동, 플로트, ... 부동)입니다. 2 자리 소수 자릿수로 서식을 지정해야하지만 목록의 처음 2 때문에 문자열, 그것은 형식 오류를 제공합니다.

감사합니다.

답변

1

당신은 수레 값을 분석하기 위해 결과를 반복 할 수 있고, 당신은 행 단위로 작성하는 writer.writerows(row)를 사용할 수 있습니다. 을 반복하는 다른 방법을 알고 싶다면 here을보십시오.

한편, 파이썬에서 round() 함수를 사용하여 소수점 이하 두 자리까지 플로트를 포맷 할 수 있습니다.

예 :

>>> # Each of your rows should be something like: 
>>> list = ["string1", "string3", 1.435654, 4.43256] 

>>> #Round the floats 
>>> parsed_list = [round(x, 2) if i > 1 else x for i, x in enumerate(list)] 

>>> print parsed_list 
['string1', 'string2', 1.44, 4.43] 
1

파이썬에서 목록 이해력과 삼진 if-else를 사용하여 '결과'목록을 변경해야합니다.

result = [x if type(x) is str else format(x,'.2f') for x in result]

관련 문제