Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 漂亮的汤取代了传统的汤_Python_Python 3.x_Beautifulsoup - Fatal编程技术网

Python 漂亮的汤取代了传统的汤

Python 漂亮的汤取代了传统的汤,python,python-3.x,beautifulsoup,Python,Python 3.x,Beautifulsoup,我找到了要替换的文本,但当我打印soup时,格式发生了变化。此处的stuff变为div id=contentstuff here/div。如何保存数据?我尝试过printsoup.encodeformatter=none,但这会产生相同的错误格式 from bs4 import BeautifulSoup with open(index_file) as fp: soup = BeautifulSoup(fp,"html.parser") found = soup.find("div

我找到了要替换的文本,但当我打印soup时,格式发生了变化。此处的stuff变为div id=contentstuff here/div。如何保存数据?我尝试过printsoup.encodeformatter=none,但这会产生相同的错误格式

from bs4 import BeautifulSoup

with open(index_file) as fp:
    soup = BeautifulSoup(fp,"html.parser")

found = soup.find("div", {"id": "content"})
found.replace_with(data)
当我打印找到的文件时,我得到了正确的格式:

>>> print(found)
<div id="content">stuff</div>
找到的对象不是Python字符串,而是一个恰好具有良好字符串表示形式的对象。您可以通过执行以下操作来验证这一点

type(found)
标记是Beauty Soup为您创建的对象层次结构的一部分,以便您能够与HTML交互。另一个这样的对象是。NavigableString非常类似于字符串,但它只能包含进入HTML内容部分的内容

当你这样做的时候

found.replace_with('<div id="content">stuff here</div>')
请注意,正确的替换不会试图覆盖标记


如果确实找到了。将_替换为…,则在父层次结构中替换由找到的名称引用的对象。但是,找到的名称始终指向与以前相同的过期对象。这就是为什么printing soup会显示更新,但printing found不会显示更新。

索引文件的保存格式是什么?你能展示一部分吗?我对.html文件没有任何问题,并且完全相同。该文件另存为.html。如果我打印出来,我发现一切都好。如果我打印soup,那么我刚才替换的find将显示div id=contentStuff,您正试图执行这些行吗?因为我试图在BeautifulSoup中加载相同的内容,但不存在这样的问题。如果不完全相同,则共享完全相同的代码并输出变量数据中的内容是什么@用户3525290谢谢你的解释。我不知道我会不会明白。正在走向正则表达式解决方案。@user3525290。我理解那种感觉。考虑到你现在所知道的,我建议你重新阅读我从零开始链接到的那些漂亮的汤文档。如果你已经知道他们会说什么,他们就相当不错了:
found.replace_with('<div id="content">stuff here</div>')
found.string.replace_with('stuff here')