Python 2.7 в операторе на вводе HTML не удается - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь понять, почему оператор 'in' не может определить подстроку с вводом HTML.У меня есть файл отчета в формате html, и мне нужно найти и извлечь любые строки с информацией об ошибках данных.

По независящим от меня причинам я вынужден использовать Python 2.7.1.

Минимальный код:

import os
import sys

with open(sys.argv[1], "r") as input:
    for line in input:
        print("{}:{}".format('Data' in str(line),line)

Минимальный тестовый ввод:

<html>
<head> </head>
<body>
<h2>Result summary</h2>
<table>
<tr><td class="header">Last 4500 Errors</td></tr>
<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 41A3A7094, Expected: B6329266, Actual: B6329066</td></tr>
<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 2376908D4, Expected: 813E2880, Actual: 813E2800</td></tr>
</table>
</body>
</html>

Результат:

False:??<html>

False:<head>

False:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

False:</head>

False:<body>

False:<h2>Result summary</h2>

False:<table>

False:<tr><td class="header">Last 4500 Errors</td></tr>

False:<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 41A3A7094, Expected: B6329266, Actual: B6329066</td></tr>

False:<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 2376908D4, Expected: 813E2880, Actual: 813E2800</td></tr>

False:</table>

False:</body>

False:</html>

False:

Эта же строка успешно проанализирована с использованием интерпретатора Python:

$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> line = '<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 41A3A7094, Expected: B6329266, Actual: B6329066</td></tr>'
>>> print("{}:{}".format('Data' in line, line))
True:<tr><td class="value">[Data Error] Test: 5, CPU: 0, Address: 41A3A7094, Expected: B6329266, Actual: B6329066</td></tr>
>>> 

Я думал, что это может быть проблема с кодировкой, поэтому я также попытался использовать модуль кодеков и открыть в соответствующей кодировке, но у меня такое же поведение.

Что такое интерпретаторделать что мой сценарий не?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...