如何使用Python2在CSV中编写unicode

时间:2017-05-05 07:19:05

标签: python csv unicode

我有一个下面的python代码,它将数据写入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)

输出我得到CSV,u前面有键和值,我不需要输出CSV。

enter image description here

CSV中的预期输出(我手动编辑了上面的输出):

enter image description here

2 个答案:

答案 0 :(得分:2)

也许你想要使用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)

答案 1 :(得分:0)

template< typename T, typename U >
inline std::unique_ptr< T > dynamic_pointer_cast(std::unique_ptr< U > &&ptr) {
    return std::unique_ptr< T >(dynamic_cast< T * >(ptr.release()));
}