Дополнительные символы, извлеченные с помощью XPath и Python (html) - PullRequest
0 голосов
/ 26 мая 2010

Я использовал XPath с scrapy для извлечения текста из HTML-тегов в Интернете, но когда я это делаю, мне добавляются дополнительные символы. Примером является попытка извлечь число, например «204» из тега <td> и получить [u'204']. В некоторых случаях это намного хуже. Например, пытаясь извлечь "1 - Mathoverflow" и вместо этого получить [u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']. Есть ли способ предотвратить это или обрезать строки, чтобы лишние символы не были частью строки? (использование предметов для хранения данных). Похоже, что это как-то связано с форматированием, так как я могу заставить xpath не забирать эти вещи?

Ответы [ 3 ]

2 голосов
/ 26 мая 2010

Как выглядит строка кода, возвращающая [u'204']? Похоже, что возвращается список Python, содержащий строку Unicode со значением, которое вы хотите. Там нет ничего плохого - только нижний индекс. Что касается возвратов каретки, перевода строки и вкладок, как только что ответил Вай Ип Тунг, полоса их уберет.

Возможно

my_answer = item1['Title'][0].strip()

Или, если вы ожидаете несколько матчей

for ans_i in item1['Title']:
    do_something_with( ans_i.strip() )
2 голосов
/ 26 мая 2010

Стандартная функция XPath normalize-space() имеет именно тот эффект, который требуется.

Он удаляет начальные и конечные пробелы и заменяет все внутренние пробелы только одним пробелом.

Итак, вы можете использовать :

normalize-space(someExpression)

1 голос
/ 26 мая 2010

Используйте strip () для удаления начальных и конечных пробелов.

>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...