2014-12-07 4 views
0

Я использую urllib2, BeautifulSoup и topia.termextract модулей в Python 2.7 для извлечения терминов чтения параграфов сайтадобывающих термины печатают искажены кортежи

>>> extractor("he is Programmer, Visionary Entrepreneur and Investor ") 
[('Entrepreneur', 1, 1), ('Programmer', 1, 1), ('Visionary', 1, 1), ('Investor', 1, 1), ('Visionary Entrepreneur', 1, 2)] 

Это прекрасно работает с пунктом

но в цикле ниже

>>> def getTerms(website): 
     page = urllib2.urlopen(website) 
     text = page.read() 
     soup = BeautifulSoup(text) 

     for para in soup.findAll('p'): 
      print extractor(para.text) 

Передача веб-страницы url в functio п выше гравюр

[(u'Entrepreneur', 1, 1), (u'Programmer', 1, 1), (u'Visionary', 1, 1), (u'Investor', 1, 1), (u'Visionary Entrepreneur', 1, 2)] ..... 

u Там будет напечатано в запуске кортежей? как я могу получить форму чистых кортежей?

Примечание: Только печать para.text печатает чистые параграфы текста в цикле выше

ответ

2

Эти строки Unicode (отсюда и «») формат. «U» не является частью строки, но указывает ее формат.

>>> s='abc' 
>>> type(s) 
<type 'str'> 
>>> s=u'abc' 
>>> type(s) 
<type 'unicode'> 

Если вы имеете дело с третьей стороной веб-сайтов, вам нужно будет иметь дело с Unicode (потому что вы в конечном итоге будет встретить сайт, который не находится в американском английском).

Пожалуйста, прочтите этот раздел из питона документы тщательно: https://docs.python.org/2/howto/unicode.html

Или еще лучше, перейти на Python 3, где Юникода формат по умолчанию для строк.

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