如何在 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])