当前位置: 首页 > 知识库问答 >
问题:

将蟒蛇转义的 Unicode 序列转换为 UTF-8 [重复]

马阳晖
2023-03-14

我用的是美丽的汤。它给我一些超文本标记语言节点的文本,但是这些节点有一些Unicode字符,这些字符被转换为字符串中的转义序列。

例如,一个具有以下:50 € 的 HTML 元素由美丽的汤检索,如:汤.find(“h2”).文本作为以下字符串:50\u20ac,这只能在 Python 控制台中读取。但是,当写入JSON文件时,它变得不可读。注意:我使用以下代码保存到 JSON 文件:

with open('file.json', 'w') as fp:
        json.dump(fileToSave, fp)

我如何将这些Unicode字符转换回UTF-8或任何使它们可读的东西?

共有3个答案

陈斌蔚
2023-03-14

请尝试以下操作:

utf8string = <unicodestring>.encode("utf-8")
郝承悦
2023-03-14

对于 Python 2.7,我认为你可以使用编解码器json.dump(obj, fp, ensure_ascii= False)。例:

import codecs
import json

with codecs.open(filename, 'w', encoding='utf-8') as fp:
    # obj is a 'unicode' which contains "50 €"
    json.dump(obj, fp, ensure_ascii=False)
沈伟
2023-03-14

使用Python 3的小演示。如果不使用< code > assure _ ascii = False 转储到JSON,非ASCII码将被写入带有Unicode转义码的JSON。这不会影响加载JSON的能力,但是在。json文件本身。

Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from bs4 import BeautifulSoup
>>> html = '<element>50\u20ac</element'
>>> html
'<element>50€</element'
>>> soup = BeautifulSoup(html,'html')
>>> soup.find('element').text
'50€'
>>> import json
>>> with open('out.json','w',encoding='utf8') as f:
...  json.dump(soup.find('element').text,f,ensure_ascii=False)
...
>>> ^Z

输出的内容(UTF-8 编码):

"50€"
 类似资料:
  • 嗨,我在Python中将utf-8 json转换成unicode escape json时遇到了一些问题 我知道如何将utf-8.txt转换为unicodeescape.txt 但是,我在Python中使用json模块时遇到了上面应用的问题,如下所示 它保存得很好,但是,当涉及到json中的双引号(“)时,它会自动添加双反斜杠(\\),因此unicode-esc.json文件在调用python脚本

  • 问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str

  • 问题内容: 我的数据采用以下格式:或类似。我想将它们转换为UTF-8(原始字符是好和我)。我该怎么做? 问题答案: 这可能是最简单的解决方案。

  • 我有一个oracle DB,根据我们的DB管理,没有设置格式,但是当我们将数据导出到文本文件时,它是以utf-8的形式出现的 谁能帮我把这些文本文件转换成Unicode码吗

  • 问题内容: 当我尝试使用“ unicode(head.contents [3])”获取标签的内容时,我得到类似于以下的输出:“ Christensen Sk \ xf6ld”。我希望转义序列作为字符串返回。如何在python中做? 问题答案: 假设Python将名称视为普通字符串,则首先必须将其解码为unicode: 实现此目的的另一种方法: 注意字符串前面的“ u”,表示它是未编码的。如果进行打

  • 我试图保存一个字符串在希伯来文文件,同时有文件ANSI编码。恐怕所有的尝试都失败了。 PHP文件本身是UTF-8 这是我正在尝试的代码: 由于某种原因,返回false。 另一次尝试是: 这返回一个空字符串。当这不起作用时,将输出字符集更改为Windows-1255的工作。所以函数本身工作,但由于某种原因,它不转换为1252。 我运行这个函数之前和之后的和打印的结果 在图标之前编码是UTF-8,在图