我有很多匈牙利语,我从我使用的API中获得。 据我所知,这些单词以url编码。
例如,匈牙利语中的“kószolgat”一词来自API:
k%C3%B3szolgat
我想用匈牙利语获取原始单词,并将其写入csv / xlsx文件。
感谢您的帮助。
答案 0 :(得分:0)
from openpyxl import load_workbook, Workbook
xls = load_workbook('output.xlsx')
output_file = Workbook()
output = output_file.active
output.title = 'My data sheet'
output.append(["Title one", "Title two"])
for line in your_api:
# Depending on a lot of encoding parameters (Your locale, the applications locale, the API locale etc)
value_one = urllib.unquote(line[1]).decode('utf-8')
value_two = ...
output.append([value_one, value_two])
现在这解决了你的问题"写到excel"部分,编码很棘手。 这取决于您的控制台和区域设置,以及API的区域设置。
我的猜测是你可能.decode('iso-8859-15')
或其他东西,看看是否有这种情况,但一般来说大多数游戏机都使用UTF-8。
答案 1 :(得分:0)
csv
模块不支持Unicode,但它支持8位干净字节字符串,因此可以使用此模块将UTF8编码数据写入CSV文件。
由于数据出现是urlencoded UTF8,您可以取消引用它并将其写入CSV文件。
>>> from urllib import unquote_plus
>>> from_api = 'k%C3%B3szolgat'
>>> unquoted = unquote_plus(from_api)
>>> unquoted # UTF-8 encoded byte string
'k\xc3\xb3szolgat'
>>> unquoted.decode('utf8') # returns a unicode string
u'k\xf3szolgat'
但是您不需要将其转换为unicode才能将其写入CSV,只需将其取消引用并将其写为CSV格式为UTF-8:
import csv
from urllib import unquote_plus
with open('output.csv', 'w') as outfile:
writer = csv.writer(outfile)
from_api = 'k%C3%B3szolgat'
writer.writerow(['some value', unquote_plus(from_api), 'another value'])
运行output.csv
的内容后将是:
some value,kószolgat,another value