Как удалить целое предложение, содержащее номер, специальный символ, URL-адрес веб-сайта или адрес электронной почты? - PullRequest
0 голосов
/ 30 января 2019

Как удалить целое предложение, содержащее номер, специальный символ, URL-адрес веб-сайта или адрес электронной почты?

Пример ввода Вариант A:

['Hi my name is blank.', 'Do it 3 times.', 'Check out this website: https://blah.com', 'I like pie.', 'My email is asdf@jkl@gmail.com.']

Пример ввода Вариант B:

['Hi my name is blank. Do it 3 times. Check out this website: https://blah.com', 'I like pie. My email is asdf@jkl@gmail.com.]

Пример вывода:

['Hi my name is blank.','I like pie']

Текущий код:

def remove_emails(self, dataframe):
    self.log.info('Removing emails from text data')
    no_emails = dataframe.str.replace('\S*@\S*\s?', '')
    return no_emails

def remove_website_links(self, dataframe):
    self.log.info('Removing website links from text data')
    no_website_links = dataframe.str.replace('http\S+', '')
    return no_website_links

def remove_special_characters(self, dataframe):
    self.log.info('Removing special characters from text data')
    no_special_characters = dataframe.replace(r'[^A-Za-z0-9 ]+', '', regex=True)
    return no_special_characters

def remove_numbers(self, dataframe):
    self.log.info('Removing numbers from text data')
    no_numbers = dataframe.str.replace('\d+', '')
    return no_numbers

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

1 Ответ

0 голосов
/ 30 января 2019

Вы можете проверять различные случаи, используя это регулярное выражение, и отклонять соответствующую ему строку.

https?:|@\w+|\d

Коды Python,

import re

arr = ['Hi my name is blank.', 'Do it 3 times.', 'Check out this website: https://blah.com', 'I like pie', 'My email is asdf@jkl@gmail.com']

for s in arr:
 m = re.search(r'https?:|@\w+|\d',s)
 if (m):
  pass
 else:
  print(s)

В результате вы получаете только нужные вам предложения,

Hi my name is blank.
I like pie
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...