我有一些代码可以在Python 3中使用,但我需要将其降级到Python 2。我有一个类,它写了一个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/UUTF-8字符分隔列?
编辑:因此,我找到了一些方法,使Python 2更好地与utf-8配合使用。包括
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
文件顶部的帮助。我仍然得到一个TypeError:"分隔符"必须是一个1个字符的字符串。
据我所知,您不能在python 2.x:中使用多字节字符作为分隔符或quotechar
TypeError: "delimiter" must be an 1-character string
错误消息确实显示"1个字符"而不是"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ę æ