文件包含\u00c2\u00a0,转换为字符

2024-04-15

我有一个 JSON 文件,其中包含这样的文本

 .....wax, and voila!\u00c2\u00a0At the moment you can't use our ...

我的简单问题是如何将这些 \u 代码转换(而不是删除)为空格、撇号等...?

Input:一个文本文件.....wax, and voila!\u00c2\u00a0At the moment you can't use our ...

Output: .....wax, and voila!(converted to the line break)At the moment you can't use our ...

Python代码

def TEST():
        export= requests.get('https://sample.uk/', auth=('user', 'pass')).text

        with open("TEST.json",'w') as file:
            file.write(export.decode('utf8'))

我尝试过的:

  • 使用 .json()
  • 组合 .encode().decode() 等的任何不同方式。

Edit 1

当我将此文件上传到 BigQuery 时,我有 -Â symbol

更大的样本:

{
    "xxxx1": "...You don\u2019t nee...",
    "xxxx2": "...Gu\u00e9rer...",
    "xxxx3": "...boost.\u00a0Sit back an....",
    "xxxx4": "\" \u306f\u3058\u3081\u307e\u3057\u3066\"",
    "xxxx5": "\u00a0\n\u00a0",
    "xxxx6": "It was Christmas Eve babe\u2026",
    "xxxx7": "It\u2019s xxx xxx\u2026"
}

Python代码:

import json
import re
import codecs


def load():
    epos_export = r'{"xxxx1": "...You don\u2019t nee...","xxxx2": "...Gu\u00e9rer...","xxxx3": "...boost.\u00a0Sit back an....","xxxx4": "\" \u306f\u3058\u3081\u307e\u3057\u3066\"","xxxx5": "\u00a0\n\u00a0","xxxx6": "It was Christmas Eve babe\u2026","xxxx7": "It\u2019s xxx xxx\u2026"}'
    x = json.loads(re.sub(r"(?i)(?:\\u00[0-9a-f]{2})+", unmangle_utf8, epos_export))

    with open("TEST.json", "w") as file:
        json.dump(x,file)

def unmangle_utf8(match):
    escaped = match.group(0)                   # '\\u00e2\\u0082\\u00ac'
    hexstr = escaped.replace(r'\u00', '')      # 'e282ac'
    buffer = codecs.decode(hexstr, "hex")      # b'\xe2\x82\xac'

    try:
        return buffer.decode('utf8')           # '€'
    except UnicodeDecodeError:
        print("Could not decode buffer: %s" % buffer)



if __name__ == '__main__':
    load()

我制作了这个粗略的 UTF-8 unmangler,它似乎可以解决您混乱的编码情况:

import codecs
import re
import json

def unmangle_utf8(match):
    escaped = match.group(0)                   # '\\u00e2\\u0082\\u00ac'
    hexstr = escaped.replace(r'\u00', '')      # 'e282ac'
    buffer = codecs.decode(hexstr, "hex")      # b'\xe2\x82\xac'

    try:
        return buffer.decode('utf8')           # '€'
    except UnicodeDecodeError:
        print("Could not decode buffer: %s" % buffer)

Usage:

broken_json = '{"some_key": "... \\u00e2\\u0080\\u0099 w\\u0061x, and voila!\\u00c2\\u00a0\\u00c2\\u00a0At the moment you can\'t use our \\u00e2\\u0082\\u00ac ..."}'
print("Broken JSON\n", broken_json)

converted = re.sub(r"(?i)(?:\\u00[0-9a-f]{2})+", unmangle_utf8, broken_json)
print("Fixed JSON\n", converted)

data = json.loads(converted)
print("Parsed data\n", data)
print("Single value\n", data['some_key'])

它使用正则表达式从字符串中获取十六进制序列,将它们转换为单个字节并将它们解码为 UTF-8。

对于上面的示例字符串(我已经包含了 3 字节字符作为测试)这会打印:



Broken JSON
 {"some_key": "... \u00e2\u0080\u0099 w\u0061x, and voila!\u00c2\u00a0\u00c2\u00a0At the moment you can't use our \u00e2\u0082\u00ac ..."}
Fixed JSON
 {"some_key": "... ’ wax, and voila!  At the moment you can't use our € ..."}
Parsed data
 {'some_key': "... ’ wax, and voila!\xa0\xa0At the moment you can't use our € ..."}
Single value
 ... ’ wax, and voila!  At the moment you can't use our € ...
  

The \xa0“解析数据”中的内容是由Python输出字典到控制台的方式引起的,它仍然是实际的不间断空格。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件包含\u00c2\u00a0,转换为字符 的相关文章

随机推荐

  • 反汇编中演示 volatile 的示例 C 代码?

    演示反汇编中易失性和非易失性之间差异的简短说明性 C 程序是什么 ie int main volatile int x vs int main int x 我们可以用什么来代替两者 这样生成的代码就不同了 例如 x 0 If x is no
  • 从原始 r 和 s 创建 DER 格式的 ECDSA 签名

    我有一个原始 ECDSA 签名 R 和 S 值 我需要 DER 编码版本的签名 有没有一种直接的方法可以使用 c 接口在 openssl 中执行此操作 我目前的尝试是使用i2d ECDSA SIG const ECDSA SIG sig u
  • 单选按钮选中更改事件触发两次

    请阅读我的问题 它不是重复的问题 我在 Windows 窗体上有三个单选按钮 所有这些按钮都具有关联的常见 CheckedChanged 事件 当我单击任何这些单选按钮时 它会触发 CheckedChanged 事件两次 这是我的代码 pr
  • 什么可能导致 ASP.NET 应用程序忘记用户?

    我有一个 ASP NET 应用程序 它似乎在一段时间后忘记了用户已登录 我正在使用会员资格提供商 当选择 记住 登录时 它会在会话期间记住它 我什至可以关闭浏览器 重新启动并返回 它仍然会登录 但过了一段时间它就会忘记 而且似乎在任何旧时间
  • 在 ASP.NET 3.5 中创建 RSS 源

    如何使用 C 在 ASP NET 3 5 中创建 RSS 提要 哪些框架部分可以帮助 NET 开发人员更轻松地发布 RSS 或 Atom 提要 NET 4 中是否有任何额外功能可以使此任务比 3 5 中更容易 3 5 中有一个新的命名空间
  • 如何限制拖动元素在interact.js中重叠

    容器中的拖动元素不应该重叠 我们如何限制 请帮忙 交互API链接 http interactjs io 抱歉 没有尽早回答这个问题 我相信你必须手动检查元素的顶部 底部 左侧和右侧边缘的位置 所以这就是我所做的 Call this func
  • matlab 数组中的 DICOM 维度(所有帧都以数组的最后一个维度结束)

    在我的 GUI 之一中 我加载 DICOM 图像 有时它们只是一个体积和另一个维度 当我将它们加载到 Matlab 中时 一切都会到达我想要的位置 handles inf dicominfo filepath filename handle
  • 对链接列表进行排序

    我用 C 编写了一个基本的链表类 它有一个 Node 对象 它 显然 代表列表中的每个节点 代码中没有使用IEnumerable 但是我可以实现排序功能吗 我使用的语言是C C 中有这样的例子吗 我正在从这个工作sample http ww
  • Python,在输出中将所有浮点数打印到小数点后两位

    我需要输出 4 个不同的浮点数到小数点后两位 这就是我所拥有的 print 2f var1 kg 2f var2 lb 2f var3 gal 2f var4 l 这是非常不干净的 而且看起来很糟糕 有没有办法让输出 2f 中出现任何浮动
  • 如何在 Swift 中创建一个空数组?

    我对如何在 Swift 中创建空数组感到非常困惑 您能否向我展示创建带有一些细节的空数组的不同方法 干得好 var yourArray String 上面的方法也适用于其他类型 而不仅仅是字符串 这只是一个例子 为其添加价值 我想您最终会想
  • app.dock.hide(); 的等效项是什么?

    我目前正在开发电子托盘应用程序 对于 Mac Electron 框架具有将应用程序隐藏在 Dock 中的功能 app dock hide 我尝试在 Windows 计算机上运行此程序并收到错误 TypeError Cannot read p
  • “内部联系”是什么意思?

    标准中写道 当名称具有内部链接时 它所表示的实体可以是 由同一翻译单元中其他范围的名称引用 and 具有命名空间范围 3 3 6 的名称具有内部链接 如果它是 变量 函数或函数模板的名称 显式声明为静态 所以考虑下面的代码 include
  • s3 存储桶中的 utf-8 文件名

    是否可以使用 utf 8 编码名称 如 jpg 向 s3 添加密钥 使用 boto 上传时出现以下错误
  • Python 请求:requests.exceptions.TooManyRedirects:超过 30 个重定向

    我试图使用 python requests 库抓取此页面 import requests from lxml import etree html url http www amazon in b ref sa menu mobile ele
  • 使用 MongoDB 有效确定层次结构中记录的所有者

    我正在努力实现以下目标 选择我拥有的所有记录 其中所有权是我创建的对象或我管理的用户创建的对象 其中用户管理可以在管理用户的用户层次结构中 所有权显然很简单 可以通过与所有者相对应的简单 ID 来处理 用户管理的层次结构让我有点难以执行 而
  • 当 Net Framework 引用 Net 标准库时,无法加载文件或程序集

    我对 netstandard 非常陌生 当我想运行引用 netstandard 库的 Net Framework 控制台 调试模式时 我刚刚遇到异常 所以我后来发现 如果我将 nuget 中的 System IO Ports 安装到 Net
  • 如何在某一点切断一条线,但在最近的空间处分割

    我希望每行在 20 个字符过去后分开 但我希望它在最近的空格处分开 这样句子就只有整个单词 这是我的代码 System out println Please input a word Scanner stringScanner new Sc
  • 如何获取PAC的访问日志(代理自动配置)

    我正在使用 Chrome 我想为自己监控浏览器访问日志 我怀疑某些扩展程序在后台发送 url 等 我尝试使用 Privoxy 但它无法记录 HTTPS url 我认为 PAC 是记录原始 url 的唯一方法 我使用 PAC 几年了 但我仍然
  • 如何使用 django-pytest 跟踪 Django 重定向?

    在设置一个档案索引视图 https docs djangoproject com en 2 0 ref class based views generic date based django views generic dates Arch
  • 文件包含\u00c2\u00a0,转换为字符

    我有一个 JSON 文件 其中包含这样的文本 wax and voila u00c2 u00a0At the moment you can t use our 我的简单问题是如何将这些 u 代码转换 而不是删除 为空格 撇号等 Input