Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从json中提取img src值_Python_Regex_Bash - Fatal编程技术网

Python 从json中提取img src值

Python 从json中提取img src值,python,regex,bash,Python,Regex,Bash,我需要帮助从文本中提取src值(例如:LOC/IMG.png)。任何最佳方法都可以做到这一点,因为我的文件数超过10^5个 我的建议如下: {"Items":[{src=\"LOC/IMG.png\"}]} 让我为解析器写一条免责声明:我并不声称正则表达式是最酷的,我自己在任何地方都可以使用XML/JSON解析器。然而,当涉及到任何格式错误的文本时,解析器通常无法以我想要的方式处理这些情况。我必须添加regexish代码来处理这些情况 因此,如果绝对需要正则表达式,请使用(?您有包含一些HTM

我需要帮助从文本中提取src值(例如:
LOC/IMG.png
)。任何最佳方法都可以做到这一点,因为我的文件数超过10^5个

我的建议如下:

{"Items":[{src=\"LOC/IMG.png\"}]}

让我为解析器写一条免责声明:我并不声称正则表达式是最酷的,我自己在任何地方都可以使用XML/JSON解析器。然而,当涉及到任何格式错误的文本时,解析器通常无法以我想要的方式处理这些情况。我必须添加regexish代码来处理这些情况


因此,如果绝对需要正则表达式,请使用
(?您有包含一些HTML值的JSON。因此,如果可能的话,您应该将JSON解析为JSON,然后将HTML值解析为HTML。这要求您对数据结构有一点了解,但无论如何,这都是一件好事

例如:

j = json.loads(s)
for item in j['Items']:
    soup = bs4.BeautifulSoup(item['Item'])
    for img in soup.find_all('img'):
        yield img['src']
这可能太慢了,但只需要几分钟就可以编写正确的代码,在1000个随机的代表性文件上运行,然后计算出当外推到任何“10万个文件计数”时是否足够快是的。如果它足够快,那么就这样做;在其他条件相同的情况下,正确和简单总是比笨拙或复杂要好,而且如果意外数据一下子就以错误的形式出现,而不是一周后你才注意到的错误结果,你会节省时间


如果你的文件大约是2K,就像你的例子一样,我的笔记本电脑可以
json。加载
2K的随机json和
BeautifulSoup
2K的随机HTML所需的时间比从硬盘读取2K所需的时间要短,所以更糟糕的是,这只需要读取数据和无所事事所需时间的两倍。如果你的CPU速度慢,SSD速度快,或者你的data是非常不寻常的,等等,这可能不是真的(这就是为什么你测试,而不是猜测),但我认为你会没事的。

这是字符串还是字典?Json输出存储在文件中,文件数超过10万。这不是“HTML和Json的混合响应”,它只是JSON,其中一些成员是字符串,似乎是某种形式的预处理HTML。正确的解析方法是解析JSON,查看要查看的字符串,然后将其解码为HTML片段,然后搜索。是的,一些参数中混合了HTML字符串。文件格式为JSON as mentio还有,10万是多少?是不是像bakers几十个中的173.6个呢?除了已经很糟糕的事实之外,解析以某种未知方式转义并嵌入到另一种格式中的HTML可能包含与您所寻找的完全相同的模式更糟糕。
j = json.loads(s)
for item in j['Items']:
    soup = bs4.BeautifulSoup(item['Item'])
    for img in soup.find_all('img'):
        yield img['src']