2012-04-19 3 views
2

В приведенном ниже коде анализируется HTML, проблема разбивается, когда в данных появляются амперсанды.Сплит-строка с запятыми также разделяет амперсанды

from HTMLParser import HTMLParser 

data = '<HTML><meta http-equiv="Pragma" content="no-cache"></head>'\ 
'<body>107,1,236,1000,70,498,NameA NameB & NameC - ActionA ActionB</body></html>' 

class MyHTMLParser(HTMLParser): 
     def handle_data(self, data): 
      print data.split(',') 

parser = MyHTMLParser() 
parser.feed(data) 

Выход
Это расщепление «&» вместо только запятые.

['107', '1', '236', '1000', '70', '498', 'NameA NameB '] 
['&'] 
[' NameC - ActionA ActionB'] 

Благодаря

+2

Это разделение только на запятую. Парсер HTML обрабатывает «&» как отдельный токен. – yak

+2

Одинокий '&' недействителен в разделе PCDATA. –

+0

большое спасибо, ребята –

ответ

1

Ну, я думаю, что это путь,

data2 = data.replace('&', 'and') 
0

Альтернативное решение, принеси значение в <body> тега и анализировать с помощью data.split(',') с помощью BeautifulSoup или любую библиотеку по вашему выбору ,