Дополнительные символы, извлеченные XPath и Python (HTML)
Вопрос
Я использовал XPath с помощью SCHAPY для извлечения текста из тегов HTML онлайн, но когда я получаю дополнительные символы. Пример пытается извлечь номер, как «204» из <td>
тег и получение [u'204']
. Отказ В некоторых случаях гораздо хуже. Например, пытаясь извлечь «1 - Makoverflow» и вместо этого получается [u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']
. Отказ Есть ли способ предотвратить это или обрезать строки так, чтобы дополнительные символы не были частью строки? (Использование элементов для хранения данных). Похоже, у него есть что делать с форматированием, так как я могу получить XPath, чтобы не поднять это?
Решение
Как выглядит линию кода, которая возвращается [u'204']
? Похоже, что возвращается, это список Python, содержащий строку Unicode с нужным вами значением. Ничто не воннет там - просто индекс. Что касается возврата каретки, линейных префидов и вкладки, как только что ответили Wai Yip Tung, поднят их.
Наверное
my_answer = item1['Title'][0].strip()
Или если вы ожидаете несколько матчей
for ans_i in item1['Title']:
do_something_with( ans_i.strip() )
Другие советы
Стандартная функция XPath normalize-space()
имеет именно то нужный эффект.
Он удаляет ведущее и затягивающее пространство Wite и заменяет любое внутреннее пробелование только одним пространством.
Итак, вы могли бы использовать:
normalize-space(someExpression)
Используйте полоску () для удаления ведущих и задних белых пробелов.
>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'