Unicode编码错误:将输出重定向至文件时- Python 2.7

2024-03-28 16:46:09 发布

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

我必须将googlemapsapi函数的输出重定向到一个文件。我的pandas数据框中有一些objects,我正在通过googleapi获取它们的地址。你知道吗

import googlemaps
from __future__ import print_function
f=open('output.csv', 'w')
for idx, row in df.iterrows():
    gmaps = googlemaps.Client(key="my_key")
    reverse_result = gmaps.reverse_geocode((row['lat'], row['lon']), result_type='administrative_area_level_3')
    for result in reverse_result:
        print (row['object'],result["formatted_address"], file=f)

当我这样做的时候,我得到了一个错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 15: ordinal not in range(128)

如果我只是简单地将它打印到屏幕上,它就可以完美地工作,并显示格式良好的地址;问题是在将它写入外部文件的过程中。我想我明白错误信息告诉我的是什么-输出中有一些字符没有用utf8编码-但我不知道如何解决它,并将我的输出写入我的csv。你知道吗


Tags: 文件csvkey函数inimportfor地址
1条回答
网友
1楼 · 发布于 2024-03-28 16:46:09

问题解决了。原来问题不是来自API的结果,而是来自df的row['object']。我写了一个简单的函数

def force_to_unicode(text):
    return text if isinstance(text, unicode) else text.decode('utf8')

然后我编辑了第二个for循环:

for result in reverse_result:
        a=force_to_unicode(row['object']) 
        b=result['formatted_address']
        print(a,',',b, file=f) #write result to csv file

相关问题 更多 >