首页 > 解决方案 > 逐行搜索 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 文档的每一行,这很有效。

标签: python-3.x

解决方案


  • break语句应该在 inside if 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

推荐阅读