Python 写入csv/xlsx url编码字

Python 写入csv/xlsx url编码字,python,urlencode,Python,Urlencode,我有很多匈牙利语单词是从我使用的API中获得的。 据我所知,这些词是用url编码的 例如,匈牙利语中的“kószolgat”一词来源于API,如下所示: k%C3%B3szolgat 我想获得匈牙利语的原始单词,并将其写入csv/xlsx文件 谢谢你的帮助 from openpyxl import load_workbook, Workbook xls = load_workbook('output.xlsx') output_file = Workbook() output = output

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

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

k%C3%B3szolgat
我想获得匈牙利语的原始单词,并将其写入csv/xlsx文件

谢谢你的帮助

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的语言环境

我猜你可能会。解码“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即可:

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后,其内容将为:


尝试在“utf8”中解码数据。发布您的代码将更容易建议如何处理它,但请看一下我尝试过这样做:打印urllib。取消引用“k%C3%B3szolgat”。解码“utf8”,但打印打印“kószolgat”,当我不使用打印时,我在python shell中得到了u'k\xf3szolgat'。你能回答你的问题吗?@NuritIzraelov了解python版本也很重要。 some value,kószolgat,another value