1
import urllib
from urllib.request import urlopen


address='http://www.iitb.ac.in/acadpublic/RunningCourses.jsp?deptcd=EE&year=2012&semester=1'
source= urlopen(address).read()
source=str(source)


from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
        def handle_data(self, data):
            x=str(data)
            if x != ('\r\n\t\t\t\t') or ('\r\n\t\t\t\t\t') or ('\r\n\r\n\t\t\t'):
                print("Encountered some data:",x)

parser = MyHTMLParser(strict=False)
parser.feed(source)

上面的代码不起作用。它仍在打印 '\r\n\t\t\t\t' 的东西。有什么建议么?

4

2 回答 2

1
if x != ('\r\n\t\t\t\t') or ('\r\n\t\t\t\t\t') or ('\r\n\r\n\t\t\t')

应该

if x not in ('\r\n\t\t\t\t', '\r\n\t\t\t\t\t', '\r\n\r\n\t\t\t')

或更好:

if not x.isspace()

您的第一个代码被评估为:

if (x != ('\r\n\t\t\t\t')) or '\r\n\t\t\t\t\t' or '\r\n\r\n\t\t\t'

请注意,最后一个值被评估为它们自己!只有一个空字符串会评估False,因此这个条件总是会通过

于 2013-06-13T06:20:21.663 回答
0

可能是 \t 和 \r 等的数量不同试试这个:

if x.replace('\r','').replace('\n','').replace('\t','').strip():
    print("Encountered some data:",x)
于 2013-06-13T06:23:01.067 回答