python-3.x - 逐行搜索 html 文件中的字符串
问题描述
所以我有一个 html 文件,我正在读取文件的前四行并将它们与字符串“<\html>”进行比较。由于某种原因,程序不会找到该字符串。(没有“\”是正在搜索的字符串)
我尝试将每一行保存为字符串,然后将其与正在搜索的字符串进行比较,但这仍然不起作用。
def search():
with open('cate.html') as ht:
for cnt, line in enumerate(ht):
if line is '<html>':
print("found")
当找到 html 时,程序应该只打印找到。html文件的前四行是:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
我也尝试使用 print(line) 打印 html 文档的每一行,这很有效。
解决方案
- 该
break
语句应该在 insideif line is '<html>':
,以便for
循环仅在匹配时才被打破。 - 文件中的行包括换行符(并且可能包括空格)。用于
line.strip()
删除尾随字符。 is
运算符不测试两个变量是否具有相同的值,而是测试它们是否指向同一个对象。用于==
比较值。
工作实施:
def search():
with open('cate.html') as ht:
for cnt, line in enumerate(ht):
print(line.strip())
if cnt < 4:
if line.strip() == '<html>':
print("found")
break
输出:
<!DOCTYPE html>
<html>
found
推荐阅读
- ruby - 有没有办法在我的 sinatra 应用程序中使用不同的 mime 类型
- json - DjangoRestFramework:在 JsonField 中搜索和排序元素
- node.js - 调用链码时出错,节点 SDK,方法:channel.sendTransactionProposal()
- bigdata - biglm - 错误:$ 运算符对原子向量无效
- c# - 可观察的堆栈面板
- php - 控制器连接问题
- sql - 如何识别数据中具有集群或块的记录?
- javascript - 有没有一种特定的方法可以降低动画速度而不会失去画布的完整性?
- c# - 当 PlayerClass 是时,如果语句中的 PlayerHealth 属性没有改变
- bash - 将任意数量的参数从变量传递给函数