Python2';是否可以将非ASCII字符用作分隔符;s csv模块?

Python2';是否可以将非ASCII字符用作分隔符;s csv模块?,csv,python-2.7,utf-8,Csv,Python 2.7,Utf 8,我有一些在Python3中工作的代码,但我需要将其降级为Python2。我有一个类,它编写一个csv,显示生成的ASCII随机字符串。下面是正在运行的Python 3代码 file = open(output_table, 'w') header = 'Path Type Original Attempt Attempt_Length Final Time_1 Time_2 Time_3'.split() filewriter = csv.writer(self.file, quoting=cs

我有一些在Python3中工作的代码,但我需要将其降级为Python2。我有一个类,它编写一个csv,显示生成的ASCII随机字符串。下面是正在运行的Python 3代码

file = open(output_table, 'w')
header = 'Path Type Original Attempt Attempt_Length Final Time_1 Time_2 Time_3'.split()
filewriter = csv.writer(self.file, quoting=csv.QUOTE_ALL, delimiter='ę', quotechar='æ')
问题是,如果我使用ascii字符,我就有可能退出该列,并导致脚本崩溃。如何使用Unicode/UTF-8字符分隔列

编辑: 因此,我找到了一些方法使Python 2更好地与utf-8配合使用。包括

    # -*- coding: utf-8 -*-
    from __future__ import print_function, unicode_literals

在文件的顶部有帮助。我仍然收到一个类型错误:“delimiter”必须是一个1个字符的字符串。

对代码进行了一些修复,快速测试表明它工作正常

import csv

with open('output.csv', 'wt', newline='') as csvfile:
    header = 'int double str'.split()
    filewriter = csv.writer(csvfile, quoting=csv.QUOTE_ALL, delimiter='ę', quotechar='æ')

    for x in range(5):
        filewriter.writerow((x, x*2, ("fooę "*x)))


with open('output.csv', 'rt') as csvfile:
    filereader = csv.reader(csvfile, quoting=csv.QUOTE_ALL, delimiter='ę', quotechar='æ')

    [print(x) for x in filereader]
输出:

['0', '0', '']
['1', '2', 'fooę ']
['2', '4', 'fooę fooę ']
['3', '6', 'fooę fooę fooę ']
['4', '8', 'fooę fooę fooę fooę ']
结果文件:

æ0æęæ0æęææ
æ1æęæ2æęæfooę æ
æ2æęæ4æęæfooę fooę æ
æ3æęæ6æęæfooę fooę fooę æ
æ4æęæ8æęæfooę fooę fooę fooę æ

通过对代码进行一些修复,快速测试表明它工作正常

import csv

with open('output.csv', 'wt', newline='') as csvfile:
    header = 'int double str'.split()
    filewriter = csv.writer(csvfile, quoting=csv.QUOTE_ALL, delimiter='ę', quotechar='æ')

    for x in range(5):
        filewriter.writerow((x, x*2, ("fooę "*x)))


with open('output.csv', 'rt') as csvfile:
    filereader = csv.reader(csvfile, quoting=csv.QUOTE_ALL, delimiter='ę', quotechar='æ')

    [print(x) for x in filereader]
输出:

['0', '0', '']
['1', '2', 'fooę ']
['2', '4', 'fooę fooę ']
['3', '6', 'fooę fooę fooę ']
['4', '8', 'fooę fooę fooę fooę ']
结果文件:

æ0æęæ0æęææ
æ1æęæ2æęæfooę æ
æ2æęæ4æęæfooę fooę æ
æ3æęæ6æęæfooę fooę fooę æ
æ4æęæ8æęæfooę fooę fooę fooę æ

据我所知,在python 2.x中,您不能使用多字节字符作为分隔符,也不能使用引号:

TypeError: "delimiter" must be an 1-character string

错误消息确实是“1个字符”而不是“1个字节”,但我无法让它工作。

据我所知,在python 2.x中,您不能使用多字节字符作为分隔符或引号:

TypeError: "delimiter" must be an 1-character string

错误消息显示的是“1个字符”而不是“1个字节”,但我无法让它工作。

您的代码有3个错误。您似乎正在将op的代码从python 3转换为python 3。您的代码有3个错误。您似乎正在将op的代码从python 3转换为python 3。如果可以的话,我会投票支持您——我想这与编码有关,而且python 2无法处理关键字args的unicode。如果可以的话,我会投票支持您——我想这与编码有关,并且python 2无法处理关键字args的unicode有关关键字args。