首页 > 解决方案 > (Python)如何将一串字节恢复为原始字符串?

问题描述

我一直在解析网站,结果发现我以一种不太理想的方式将内容保存到 json 文件中,并且似乎无法对该过程进行逆向工程。基本上我已经保存了 BeautifulSoup 标签如下

r = requests.get(url).content
soup = BeautifulSoup(r, "html.parser")
article = soup.find("article")

b = article.encode()
c = str(b) 
# save c in json structure using json.dump(f)

我希望能够获得给定 c 的文章。

使用编解码器似乎几乎可以让我到达那里:

import codecs
codecs.getdecoder("unicode_escape")(c)[0]

然而,斯堪的纳维亚字母 å,ä,ö 无法正确解码。

简而言之:

输入:

'b\'<article> \\n L\\xc3\\xa4s bl.a. om Gasporox nya m\\xc3\\xa4tkoncept f\\xc3\\xb6r tr\\xc3\\xa5g, en intervju med styrelseledamoten Per Nystr\\xc3\\xb6m och nyheter fr\\xc3\\xa5n GPX Medical om bland annat projekten Sinuslight och Neo-Lung.\\n</article>''

期望的输出:

<article>
Läs bl.a. om Gasporox nya mätkoncept för tråg, en intervju med
styrelseledamoten Per Nyström och nyheter från GPX Medical om 
bland annat projekten Sinuslight och Neo-Lung.
</article> 

提前致谢!

标签: pythonstringencoding

解决方案


您需要评估该b''值,然后使用UTF-8

import ast
x = "b\'<article> \\n L\\xc3\\xa4s bl.a. om Gasporox nya m\\xc3\\xa4tkoncept f\\xc3\\xb6r tr\\xc3\\xa5g, en intervju med styrelseledamoten Per Nystr\\xc3\\xb6m och nyheter fr\\xc3\\xa5n GPX Medical om bland annat projekten Sinuslight och Neo-Lung.\\n</article>'"

x = ast.literal_eval(x)

result = x.decode("utf-8")

推荐阅读