在Python 3中将阿拉伯语单词导出到CSV

时间:2018-11-13 11:46:53

标签: python csv arabic writer

我正在尝试从转换器获取csv文件中的某些阿拉伯语。尝试将其写入CSV时,我总是遇到问题。问题是这个:

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 2-7: character maps to <undefined>

我的代码如下(其中一部分,此处尽量简洁):

from bs4 import BeautifulSoup
import requests
import csv
from yandex_translate import YandexTranslate


csv_file = open("syno.csv", "w", newline = '')
csv_writer = csv.writer(csv_file)

 #making the request to the translater and so on, not written here, tell me if you need it but I don't think so. 

traduction =(translate.translate('bonjour', 'fr-ar'))

csv_writer.writerow([traduction["text"]])
csv_file.close()

当我在SublimeText中用打印而不是csvwriter构建它时,得到的结果没有问题。 只有当我想在csv中编写时,我才遇到问题。有想法该怎么解决这个吗?

我已经看到了有关在UTF-8中进行编码或解码的内容,但是我不知道在哪里添加这种可能性

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过在代码顶部进行声明来使用UTF-8:

help("stringdist")

然后您可以使用utf-8编码/解码。
更新:根据这些答案,您应该更改其他环境Unicode,例如控制台。
[answer-1] [1]
[answer-2] [2]

尝试使用UTF-8编码打开文件:

special_dist <- function(x, method = "osa"){
  y <- sub("(^[[:digit:]]+).*[[:punct:]]([[:digit:]]+$)", "\\1\\2", x)
  res <- sapply(y, function(z) stringdist::stringdist(z, y, method = method))
  rownames(res) <- colnames(res)
  res
}

x <- c("2009/EPS.WCR.PL6.MAIS.0036", "2016/EPS.WCR.PL6.NORM.0077")
special_dist(x)
#         20090036 20160077
#20090036        0        4
#20160077        4        0

special_dist(x, "jaccard")
#          20090036  20160077
#20090036 0.0000000 0.5714286
#20160077 0.5714286 0.0000000