2013-06-13 2 views
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». Какие-либо предложения?Python 3 Специальные символы, ускоряющиеся

ответ

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, таким образом, это условие будет всегда проход

+0

Он по-прежнему печати \ г \ п \ t \ t \ t \ t. Я хочу, чтобы он не печатал этот материал. – sgp

+1

@sgp. Вы должны просто проверить 'if not x.strip()', чтобы убедиться, что 'x' не является пробелом – jamylak

+1

@jamylak, вы имеете в виду' if not x.isspace() '? –

0

может быть число \ т и \ г и т.д., варьируя попробовать это:

if x.replace('\r','').replace('\n','').replace('\t','').strip(): 
    print("Encountered some data:",x) 
+0

или просто 'x.translate (None, '\ r \ n \ t'). Strip():' –

Смежные вопросы