Python2使用日语测试导出csv

Python2使用日语测试导出csv,python,python-2.7,csv,encoding,utf-8,Python,Python 2.7,Csv,Encoding,Utf 8,我试过spamwriter.writerow(test_jp.encode('utf-8')) 但是输出是乱码的->“ã、ã、ã、ƒ、ƒ¼” 我希望输出的csv内容是'アクセサリー' 我该怎么办?(spamwriter.writerow(test_jp)不起作用)您需要将其包装在writerow的列表中,然后test_jp.encode(“utf-8”)将起作用,writerow需要一个iterable,因此它会在字符串上迭代写入每个字节: import csv with open('eggs.

我试过spamwriter.writerow(test_jp.encode('utf-8'))

但是输出是乱码的->“ã、ã、ã、ƒ、ƒ¼”

我希望输出的csv内容是'アクセサリー'


我该怎么办?(spamwriter.writerow(test_jp)不起作用)

您需要将其包装在writerow的
列表中,然后
test_jp.encode(“utf-8”)
将起作用,writerow需要一个iterable,因此它会在字符串上迭代写入每个字节:

import csv
with open('eggs.csv', 'wb') as csvfile:
    spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
    spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

    test_jp = u'\u30a2\u30af\u30bb\u30b5\u30ea\u30fc'
    print(test_jp)
    print(type(test_jp))
    print(repr(test_jp))
    print('-------------------')
    print(test_jp.encode('utf-8'))    
    print(test_jp.encode('cp932'))

    '''
    print(test_jp.decode('utf-8'))
    spamwriter.writerow(test_jp)

    Causeing ERROR
    UnicodeEncodeError: 'ascii' codec can't encode characters
    in position 0-5: ordinal not in range(128)
    '''
您可以看到,当我们对其进行迭代时,也会得到奇怪的输出:

spamwriter.writerow([test_jp.encode("utf-8")])
测试和工作:

In [6]: for ch in test_jp.encode("utf-8"):
              print ch
   ...:     

�
�

�
�

�
�

�
�

�
�

�
�


In [7]: print test_jp.encode("utf-8")
アクセサリー

我已经尝试了你的代码,但结果再次被乱码,但没有アクセサリー这是行不通的,“打印测试jp.encode(“utf-8”)”工作正常,但当我自己尝试“spamwriter.writerow([test\u jp.encode(“utf-8”)])”时,还是失败了。我认为应该实现类似于CSV模块部分的代码。@PadraicCunningham是的,对不起。再检查一遍,对我也有效。我遇到这个问题是因为我尝试了编解码器。open()它是sitll乱码。是否可以通过跳过“ascii”编码来运行spamwriter.writerow(test_jp)以避免错误?@yves,您是否将其包装在列表中并按照我在回答中的方式进行了操作?
$ cat eggs.csv 
Spam |Lovely Spam| |Wonderful Spam|
アクセサリー