python从文件中删除特定行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python从文件中删除特定行相关的知识,希望对你有一定的参考价值。
我想删除此Html文件中的特定行。我想查看字符串STARTDELETE的位置,并从那里删除+1到字符串ENDDELETE -1
为了更好地理解,我用“xxx”标记了要删除的行。我怎么能用python做到这一点?
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<h2>Image Gallery</h2>
<div class="row"> <!--STARTDELETE-->
xxx<div class="col-xs-3">
xxx<div class="thumbnail">
xxx<a href="/w3images/lights.jpg" target="_blank">
xxx<img style="padding: 20px" src="xxx" alt="bla" >
xxx<div class="caption">
xxx<p>Test</p>
xxx</div>
xxx</a>
xxx</div>
xxx</div>
</div> <!--ENDDELETE-->
</div>
</body>
</html>
答案
安装beautifulsoup4(HTML解析器/ DOM操纵器)
阅读数据,获得一个带有beautifulsoup的“DOM”(一种可步行的结构),获取你想要空的项目,以及remove its children。
在你的例子中看起来你想要清空其<div>(s)
的class=row
,对吧?让我们假设您的HTML数据存储在一个名为data.html
的文件中(在您的特定情况下可能不会像那样......它将是请求的主体或类似的东西)
from bs4 import BeautifulSoup
with open('data.html', 'r') as page_f:
soup = BeautifulSoup(page_f.read(), "html.parser")
# In `soup` we have our "DOM tree"
divs_to_empty = soup.find("div", {'class': 'row'})
for child in divs_to_empty.findChildren():
child.decompose()
print(soup.prettify())
这输出:
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Bootstrap Example
</title>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
</script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">
</script>
</head>
<body>
<div class="container">
<h2>
Image Gallery
</h2>
<div class="row">
<!--STARTDELETE-->
</div>
<!--ENDDELETE-->
</div>
</body>
</html>
如果你要做DOM操作我强烈建议你阅读和玩美味的汤(这是非常强大的)
另一答案
您可以先将该代码复制并粘贴到输入文件中,也可以命名为“input.txt”,然后将要保留的行输出到“output.txt”。忽略要删除的行。
w = open("output.txt", "w") # your output goes here
delete = False
with open("input.txt") as file:
for line in file:
if "<!--ENDDELETE-->" in line:
delete = False # stops the deleting
if not delete:
w.write(str(line))
if "<!--STARTDELETE-->" in line:
delete = True # starts the deleting
w.close() # close the output file
希望这可以帮助!
以上是关于python从文件中删除特定行的主要内容,如果未能解决你的问题,请参考以下文章