如何在 Python 的 csv 文件中保存两个带有 Unicode 字符串的列表?
How to save two lists with Unicode strings in csv file in Python?
我有一个列表列表,其中包含阿拉伯语单词。我将此列表分成两个列表,并试图将它们保存到 CSV 文件中的单独列中:
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv','w', encoding = 'utf-16') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerows(row)
上面的代码输出如下:
如果我用 writer.writerows(rowlists)
:
替换 for 循环,情况会稍微好一些
但是,所有内容都集中在一栏中。如果第一个列表是英文的(删除编码后),相同的代码可以正常工作。我怀疑 zip 函数在 Unicode 方面有问题,但我不确定。关于如何做到这一点有什么想法吗?
只需将您的 writer.writerows
更改为 writer.writerow
# coding=utf-8
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv', 'w', encoding = 'utf-16', newline='') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerow(row)
这种情况下的主要问题不是文本的编码,而是在 writer.writerows
函数中传递的内容。
zip() 函数 return 元组列表。 writerows
函数在提供列表时将文本拆分到不同的列中。
所以不是传递 元组 而是传递 列表 。
# coding=utf-8
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv','w') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerows([row])
我有一个列表列表,其中包含阿拉伯语单词。我将此列表分成两个列表,并试图将它们保存到 CSV 文件中的单独列中:
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv','w', encoding = 'utf-16') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerows(row)
上面的代码输出如下:
如果我用 writer.writerows(rowlists)
:
但是,所有内容都集中在一栏中。如果第一个列表是英文的(删除编码后),相同的代码可以正常工作。我怀疑 zip 函数在 Unicode 方面有问题,但我不确定。关于如何做到这一点有什么想法吗?
只需将您的 writer.writerows
更改为 writer.writerow
# coding=utf-8
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv', 'w', encoding = 'utf-16', newline='') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerow(row)
这种情况下的主要问题不是文本的编码,而是在 writer.writerows
函数中传递的内容。
zip() 函数 return 元组列表。 writerows
函数在提供列表时将文本拆分到不同的列中。
所以不是传递 元组 而是传递 列表 。
# coding=utf-8
import csv
words = ['يعمل','في','جامعة']
tags = ['verb','prep','noun']
with open('results.csv','w') as outfile:
rowlists = zip(words, tags)
writer = csv.writer(outfile)
for row in rowlists:
writer.writerows([row])