2014-12-27 3 views
1

Итак, у меня есть сайт с XML-строкой, и я хочу, чтобы моя программа вернула список строк, которые появляются между двумя строками. Вот мой код:Нежелательные символы в регулярных выражениях python

response = requests.get(url) 


artists=re.findall(re.escape('<name>')+'(.*?)'+re.escape('</name>'),str(response.content)) 
print(artists) 

Это возвращает список строк. Проблема в том, что в некоторых строках есть нежелательные символы. Например, одна из строк в списке - «Somethin \\ \ \ 'Bout A Truck», и я хотел бы, чтобы это было «Somethin» «Bout A Truck».

Заранее спасибо.

+0

'есть сайт с XML-строкой,' Как насчет bs4? –

+0

Я посмотрю, спасибо. – Time1

ответ

1

Я думаю, что красивый суп (BS4) решит эту проблему, и она будет также поддержке более высокой версии питона 3.4

1

Этих ускользают (одиночные символы обратных косых черт, каждый отображаются как \\) может быть «нежелательным» с вашей точки зрения но они, без сомнения, «присутствуют» в полученном вами ответе. Так что, если символы присутствуют, но нежелательные, вы можете удалить их, например, с использованием вместо str(response.content)

str(response.content).replace('\\'. '') 

, если то, что вы на самом деле хотите сделать, это удалить все такие побеги (если вы хотите сделать что-то другое, чем вам лучше объяснить, что это такое :-).

BeautifulSoup4 как рекомендовано в принятом ответе, хотя хороший пакет действительно, делает не бессмысленных удалить символы, присутствующие на входе - он не может читать ваши мысли, поэтому он не может знать, что это «нежелательный» в вы. Например:

>>> import bs4 
>>> s = '<name>Somethin\\\' \\\'Bout A Truck</name>' 
>>> soup = bs4.BeautifulSoup(s) 
>>> print(soup) 
<name>Somethin\' \'Bout A Truck</name> 
>>> 

Как вы видите, ускользает (обратные косая черта) все еще там до одинарных кавычек.

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