2017-05-05 2 views
-1

다음은 CSV 파일에 데이터를 쓰는 파이썬 코드입니다. 내가 CSV 얻을Python2를 사용하여 CSV로 유니 코드를 작성하는 방법

  from StringIO import StringIO 
      import unicodecsv as csv 

      res_io = StringIO() 

      csv_writer = csv.DictWriter(
       res_io, encoding='utf-8', fieldnames=header, 
       delimiter=str(','), quoting=csv.QUOTE_NONNUMERIC 
      ) 
      # PyCharm Debugger 
      # results: <type 'list'>: [{'review': {u'a': u'foo', u'b': u'bar'}, 'id': '1'}] 
      csv_writer.writerows(results) 

출력, u는 키와 값 앞에 추가되고 내가하지 않아도 출력 CSV있다.

enter image description here

CSV에서

예상 출력 (I 수동으로 출력 이상 편집 한) :

enter image description here

+1

가장 쉬운 솔루션 : 파이썬 3를 대신 사용합니다. 어쨌든 왜 출력이 그렇게 될 것으로 기대합니까? Python 2 사전의'repr', 즉 유니 코드 문자열과 함께 작동하는 방법입니다. 하나의 옵션은 파이썬 2 문자열 등을 사용하기 위해 전체 사전을 다시 작성하는 것입니다. –

+0

질문을 undestand하지 말고, 'u'가 출력 CSV에 나타나지 않길 바랍니까? 질문은 다른 것을 나타내는 것처럼 보입니다. – Satyadev

+0

그것은 Python3에서 작동하지만 Python2.7에 대한 도움을 요청하고 있습니다. – n33rma

답변

1

이 아마도 당신이 일관된 출력 대신 JSON을 사용 싶어

>>> json.dumps({u'a': u'foo', u'b': u'bar'}, sort_keys=True) 
'{"a": "foo", "b": "bar"}' 

보너스로 sort_keys=True 키는 알파벳순으로 표시됩니다.

from StringIO import StringIO 
import unicodecsv as csv 
import json 

res_io = StringIO() 

csv_writer = csv.DictWriter(
    res_io, encoding='utf-8', fieldnames=header, 
    delimiter=str(','), quoting=csv.QUOTE_NONNUMERIC 
) 
# PyCharm Debugger 
# results: <type 'list'>: [{'review': {u'a': u'foo', u'b': u'bar'}, 'id': '1'}] 
csv_writer.writerows({'id': i['id'], 
         'review': json.dumps(i['review'], sort_keys=True)} 
        for i in results) 
+0

결과가 일정하지 않다면, 그것은 열쇠/값 쌍의 숫자가 될 수 있습니다 내 질문을 단순화하기 때문에 나는 'id'및 'review'키의 예제를 제공했지만 실제로는 키/값 쌍이 사용자가 저장 한 숫자가 될 수 있습니다. – n33rma

+0

@ n33rma 그래서 내가 당신에게 준 것에서 적응하십시오. –

0
from StringIO import StringIO 
import csv 

res_io = StringIO() 
header= ["review","id"] 
csv_writer = csv.DictWriter(
    res_io, fieldnames=header 
    #delimiter=str(',')#, quoting=csv.QUOTE_NONNUMERIC 
) 
csv_writer.writerows([ {k:str(i[k]).replace("u'","'")}if type(i[k])==dict else {k:i[k]} for i in results for k in i ]) 
관련 문제