写入csv / xlsx url编码单词

时间:2015-05-28 11:26:05

标签: python urlencode

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

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

k%C3%B3szolgat

我想用匈牙利语获取原始单词,并将其写入csv / xlsx文件。

感谢您的帮助。

2 个答案:

答案 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