如何用正确的unicode字符替换转义的unicode字符?

2024-09-27 07:35:31 发布

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

我有一根绳子:

'https://www.jobtestprep.co.uk/media/24543/xnumber-series-big-1.png,qanchor\\u003dcenter,amode\\u003dcrop,awidth\\u003d473,aheight\\u003d352,arnd\\u003d131255524960000000.pagespeed.ic.YolXsWmhs0.png'

我需要将任意转义的unicode字符('\\uXXXX')替换为其等价的unscapedunicode字符('\uXXXX')。我有Regex来提取所有必需的部分(对于'\\uXXXX'部分和'XXXX'部分),但是我找不到一种方法来用\u{}替换正确的部分,因为Python给出了一个Unicode错误,并需要一个预填充字符,如'\u003d'。使用原始字符串不起作用,因为'\u{}'只是被转换回'\\u{}',我们就回到了开始的地方。在

有办法吗?如果您需要代码的示例,可以在此处查看:

^{pr2}$

searched_results是返回结果的列表。列表中的一个项目的例子是上面给出的字符串。在


Tags: 字符串https列表pngwww字符mediaseries
2条回答

你可以这样做。在

>>> url = (
...    'https://www.jobtestprep.co.uk/media/24543/xnumber-series-'
...    'big-1.png,qanchor\\u003dcenter,amode\\u003dcrop,awidth\\u003d473,'
...    'aheight\\u003d352,arnd\\u003d131255524960000000.pagespeed.ic.YolXsWmhs0.png'
... )
>>> url = url.encode('utf-8').decode('unicode_escape')
>>> print(url)
https://www.jobtestprep.co.uk/media/24543/xnumber-series-big-1.png,qanchor=center,amode
=crop,awidth=473,aheight=352,arnd=131255524960000000.pagespeed.ic.YolXsWmhs0.png
>>>

您的regex从网页中提取JSON字符串:

searched_results = re.findall(r"(?<=,\"ou\":\")[^\s]+[\w](?=\",\"ow\")", results_source)

你删除的那些"卡特尔实际上很重要。这里的\uxxxx转义语法是特定于JSON(和Javascript)语法的;它们与Python的使用密切相关,但是不同(不多,但是当您有非BMP代码点时,这很重要)。在

如果保留引号,则可以将它们简单地解码为JSON:

^{pr2}$

更好的方法是使用HTML库来解析页面。{使用数据}可以得到}:

import json
from bs4 import BeautifulSoup

soup = BeautifulSoup(results_source, 'html.parser')
search_results = [json.loads(t.text)['ou'] for t in soup.select('.rg_meta')]

这将把每个<div class="rg_meta" ...>元素的文本内容作为JSON数据加载,并从每个生成的字典中提取ou键。不需要正则表达式。在

相关问题 更多 >

    热门问题