You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.7修复写入JSON文件时的转义Unicode字符问题

解决Python 2.7中写入含Unicode字符文本时的转义问题

我之前也踩过Python 2.7里这种Unicode转义的坑,处理API返回的特殊字符时简直头大!咱们一步步来搞定你的问题:

问题根源

Python 2.7里字符串分两种:str(字节串)和unicode(Unicode文本)。你从Google Places API拿到JSON解析后,提取的特殊字符(比如í)其实是unicode类型,但如果直接用默认的open()函数写入文件,Python会默认用ASCII编码保存——ASCII不支持这些特殊字符,所以就自动转成了\u00ed这种转义形式。

解决方案

1. 确保JSON解析得到的是Unicode文本

首先要保证你从API返回的JSON里解析出的内容是unicode类型,而不是乱码的字节串:

  • 如果用urllib2请求API:
    import urllib2
    import json
    
    # 发送请求并读取响应
    response = urllib2.urlopen("你的Google Places API地址")
    # 先把字节响应解码成Unicode文本
    content_unicode = response.read().decode('utf-8')
    # 解析JSON,得到的内容都是Unicode类型
    data = json.loads(content_unicode)
    
  • 如果用requests库(更推荐):
    import requests
    
    response = requests.get("你的Google Places API地址")
    # response.json()会自动处理编码,返回的是Unicode组成的字典
    data = response.json()
    

2. 正确写入文件(两种方法任选)

方法一:用codecs模块指定编码打开文件

codecs.open()可以直接指定编码,写入unicode字符串时会自动转成对应编码的字节,不会出现转义:

import codecs

# 提取你需要的Unicode文本,比如地点名称
place_name = data['results'][0]['name']

# 用utf-8编码打开文件,写入Unicode文本
with codecs.open('output.txt', 'w', encoding='utf-8') as f:
    f.write(place_name)

方法二:手动编码后写入普通文件

如果不想用codecs,可以先把unicode字符串编码成UTF-8的字节串,再用普通open()写入:

place_name = data['results'][0]['name']

# 把Unicode编码成UTF-8字节串
place_name_utf8 = place_name.encode('utf-8')

with open('output.txt', 'w') as f:
    f.write(place_name_utf8)

额外注意事项

  • 永远在Python 2.7里明确区分str和unicode:处理文本时尽量用unicode类型,最后写入/输出时再编码成UTF-8字节串。
  • 如果你提取的内容不小心是str类型(比如解析时没处理编码),先把它解码成unicode:str_text.decode('utf-8'),再按上面的方法写入。

内容的提问来源于stack exchange,提问作者Phoenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:41:56