写入csv/xlsx url编码单词

2024-06-17 12:21:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有很多匈牙利语单词是从我工作的API中得到的。 据我所知,这些单词是用url编码的。在

例如,匈牙利语中的“kószolgat”一词来自API,如下所示:

k%C3%B3szolgat

我想得到匈牙利语的原始单词,并将其写入csv/xlsx文件。在

谢谢你的帮助。在


Tags: 文件csvapiurl编码xlsx单词b3szolgat
2条回答
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。在

^{}模块不支持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,只需取消引号并将其作为UTF-8写入CSV:

^{pr2}$

运行output.csv的内容将是:

^{3}$

相关问题 更多 >