Как очистить список строк - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь очистить следующие данные:

from sklearn import datasets

data = datasets.fetch_20newsgroups(categories=['rec.autos', 'rec.sport.baseball', 'soc.religion.christian'])
texts, targets = data['data'], data['target']

Где texts - список статей, а targets - вектор, содержащий индекс категории, к которой относится каждая статья. ,

Мне нужно убрать все статьи. Задача очистки означает:

  • Удалить заголовки
  • Удалить пунктуацию
  • Удалить скобки
  • Последовательные пробелы
  • Токены электронных писем сдлина 1
  • Разрывы строк

Я новичок в Python, но я пытался удалить все знаки препинания и все, используя replace (). Тем не менее, я думаю, что простой способ выполнить эту задачу должен существовать.

def clean_articles (article):
    return ' '.join([x for x in article[article.find('\n\n'):].replace('.','').replace('[','')

clean_articles(data['data'][1])

Для следующей статьи:

print(data['data'][1])

Неочищенная статья:

'От: aas7@po.CWRU.Edu (Эндрю А. Спенсер) \ nСубъект: Re: Слишком быстро \ nОрганизация: Case Western Reserve University, Кливленд, Огайо (США) \ nLines: 25 \ nReply-To: aas7@po.CWRU.Edu (Эндрю А. Спенсер) \ nNNTP-Posting-Host: slc5. ins.cwru.edu \ n \ n \ nВ предыдущей статье wrat@unisql.UUCP (wharfie) говорится: \ n \ n> В статье <1qkon8$3re@armory.centerline.com> jimf@centerline.com (JimМороз) пишет: \ n >> двигатель побольше. Вот что такое SHO - слегка модифицированный семейный седан с мощным двигателем. Они даже не удосужились улучшить \ n >> тормоза. \ n> \ n> \ tЭто показывает, сколько вы знаете о чем-либо. Тормоза на \ n> SHO очень разные - 9-дюймовые (или 9,5? Я забыл) диски вокруг, \ n> вентилируемые впереди. Обычная установка Тельца - это (меньшие) диски спереди, \ n> барабаны сзади. \ N \ никто, как я видел, тоже проветривал тылы ... это было много. \ N Конечно, продавец был дураком ... "титановые колеса ".. да, верно .. \ nпоследнее сказали мне, что они" магниевые ".. более правдоподобно, но все же \ ncrap, так как Ал намного дешевле и столь же хорош .... \ n \ nЯ склонен согласиться с тем, что это все еще не приводит SHO к «стандартному» для работы 130 на регулярной основе. Тормоза должны быть больше, например, \ n11 "или около того ... взгляните на тормоза на Corrados. (Там, где есть правила \ nbraking). \ N \ nDREW \ n '

Очищенная статья:

В предыдущей статье UUCP wharfie говорит, что в статье centerline com com Джим Фрост пишет больший двигатель. Это то, что SHO - слегка модифицированный семейный седан с мощным двигателем. Они даже не удосужились улучшить * тормоза. Это показывает, сколько вы знаете. о чем угодно Тормоза на SHO очень разные дюймовые или забыли диски со всех сторон вентилируемые спереди Обычная установка Taurus - это меньшие диски передние барабаны сзади одна пила имела вентилируемые задние части тоже это было на много конечно продавец был дураком титановые колеса да дапотом позже сказал мне, что они были магнием более правдоподобным, но все же дерьмовым, так как Al настолько намного дешевле и столь же хорош, как правило, соглашаются с тем, что это все еще не соответствует стандарту SHO для работы на 130 на регулярной основе. Тормоза должны быть больше, как11 или около того взглянуть на те на Corrados, где ониесть правила торможения DREW

1 Ответ

0 голосов
/ 06 ноября 2019

примечание: это не полный ответ, но следующее, по крайней мере, поможет вам на полпути:

  • удалить пунктуацию
  • удалить разрывы строк
  • удалить последовательные пробелы
  • удалить скобки
import re
s = ';\n(a    b.,'
print('before:', s)
s = re.sub('[.,;\n(){}\[\]]', '', s)
s = re.sub('\s+', ' ', s)
print('after:', s)

это будет печатать:

before: ;
(a    b.,
after: a b
...