我正在尝试从转换器获取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中进行编码或解码的内容,但是我不知道在哪里添加这种可能性
谢谢!
答案 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