Как удалить HTML из pandas dataframe без понимания списка - PullRequest
0 голосов
/ 04 февраля 2019

Определение проблемы

Цель состоит в том, чтобы убрать каждую строку своих HTML-тегов и сохранить их в кадре данных.

Кадр данных определяется как:

test = pd.DataFrame(data=["<p> test 1 </p>", "<p> random text </p>"], columns=["text"])

Я уже нашел этот элегантный ответ , чтобы решить проблему.Однако ради любопытства я хочу попытаться добиться того же результата, используя цикл for.

Решение с пониманием списка:

test['text'] = [BeautifulSoup(text,"lxml").get_text() for text in test['text'] ]

Попытка цикла for с итеративным подходом к решению:

Первая попытка:

Этот код имеет переменный текститерация по каждому элементу теста dataframe и распечатка результата.Пока все хорошо.

for text in test['text']:

print(text)

Вторая попытка:

Этот код делает то же самое с урезанной версией текста.

for text in test['text']:

soup = BeautifulSoup(text,"lxml")

print(soup.get_text())

Третья попытка:

Почему результат этого кода является кадром данных, все значения которого являются "случайным текстом"?

test = pd.DataFrame(data=["<p> test 1 </p>", "<p> random text </p>"], columns=["text"])

for text in test['text']:

soup = BeautifulSoup(text,"lxml")

test["text"] = soup.get_text()

В первом цикле локальная переменная text перебирает первый элемент кадра данных, который называется «тест 1».Он превращает его в суп и добавляет его в столбец «текст» теста данных.То же самое должно произойти во втором цикле.Однако все, что происходит, это то, что значение последнего цикла транслируется по всему столбцу.

Я думаю, что моя последняя строка кода фактически транслирует одно и то же значение во все строки кадра данных.,Но как мне просто изменить значение, которое принимает переменная text в заданном цикле?

Весь пост может выглядеть странно, но я думал и тестировалпока пишу пост.Я мог бы сам найти решение и обновить пост.Но я могу застрять и мне нужна другая перспектива.Спасибо за потраченное время.

[1]: Панды: устранение неполадок при удалении тегов HTML из столбца фрейма данных

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете использовать регулярные выражения для удаления тегов.

import re

TAG_RE = re.compile(r'<[^>]+>')

def remove_tags(text):
    return TAG_RE.sub('', text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...