Я использую этот скрипт для геокодирования адресов. Скрипт отлично работает, однако выходной файл преобразует специальные символы, такие как 中央区
и Athénée
в тарабарщину. т.е.
中央区
→ ä¸å¤åŒº
Athénée
→ AthÃnÃe
Входной файл представляет собой UTF-8.CSV, сохраненный в MAC excel. Сценарий использует Pandas для обработки данных. Как я могу поддерживать специальные символы, такие как выше?
Код полного скрипта можно найти здесь: https://github.com/shanealynn/python_batch_geocode/blob/master/python_batch_geocoding.py
import pandas as pd
import requests
import logging
import time
#------------------ CONFIGURATION -------------------------------
# Set your output file name here.
output_filename = '/Users/_Library/Python/geobatch/res1000_output.csv'
# Set your input file here
input_filename = "/Users/_Library/Python/geobatch/res1000.csv"
# Specify the column name in your input data that contains addresses here
address_column_name = "Address"
# Return Full Google Results? If True, full JSON results from Google are included in output
RETURN_FULL_RESULTS = False
#------------------ DATA LOADING --------------------------------
# Read the data to a Pandas Dataframe
data = pd.read_csv(input_filename, encoding='utf8')
addresses = data[address_column_name].tolist()
# All done
logger.info("Finished geocoding all addresses")
# Write the full results to csv using the pandas library.
pd.DataFrame(results).to_csv(output_filename, encoding='utf8')
По-видимому, это решение, с которым я работаю:
# Write the full results to csv using the pandas library.
pd.DataFrame(results).to_csv(output_filename, encoding='utf-8-sig')
Если я вставляю строку:
data['Address'] = data['Address'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
для декодирования и повторного кодирования входов - тогда выход становится.
中央区
→ \u4e2d\u592e\u533a
вместо ä¸å¤åŒº
что на один шаг ближе к правильному направлению, которое я предполагаю, если кто-то мог бы построить на этом?