【问题标题】:How to clean a list of strings如何清理字符串列表
【发布时间】:2020-03-03 08:35:51
【问题描述】:

我正在尝试清理以下数据:

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(Andrew A. Spencer)\n主题:回复:太快了\n组织:凯斯西储大学,克利夫兰,俄亥俄州(美国)\n行:25\n回复:aas7 @po.CWRU.Edu (Andrew A. Spencer)\nNNTP-Posting-Host: slc5.ins.cwru.edu\n\n\n在之前的文章中,wrat@unisql.UUCP (wharfie) 说:\n\n >在文章 jimf@centerline.com (Jim Frost) 中写道:\n>>更大的引擎。这就是 SHO —— 一个稍加修改的家族\n>>具有强大引擎的轿车。他们甚至没有费心改进\n>>刹车。\n>\n>\t这表明你对任何事情了解多少。 \n>SHO 上的刹车非常不同 - 9 英寸(还是 9.5?我忘了)刹车盘,\n>在前面通风。正常的 Taurus 设置是(较小的)前圆盘,\n> 后鼓。\n\我看到的没有一个后部也有排气孔......它很多。\n当然,销售人员是个傻瓜......”钛轮“..是的,对..\n后来告诉我它们是“镁”..更可信,但仍然\ncrap,因为铝便宜得多,而且一样好....\n\n \ni 倾向于同意,尽管这仍然不能使 SHO 达到“标准”\n定期运行 130。刹车应该更大,比如\n11" 左右......看看 Corrados 上的刹车。(他们有\n刹车规定)。\n\nDREW\n'

清理文章:

UUCP wharfie 在上一篇文章中说 在文章 centerline com com 中 Jim Frost 写了更大的引擎 这就是 SHO 是经过稍微修改的家庭轿车,具有强大的引擎 他们甚至没有费心改进 *刹车 这表明你对任何事情了解多少SHO上的刹车是非常不同的英寸或忘记在前面通风的盘子正常的金牛座设置是较小的盘子前鼓后一个锯子也有通风的后部当然销售人员是傻瓜钛轮是的后来告诉我他们是镁的更可信,但仍然是废话,因为 Al 便宜得多,而且同样好倾向于同意这仍然不能使 SHO 达到定期运行 130 的标准刹车应该更大,比如 11 左右看看 Corrados 上那些有刹车规定的地方

【问题讨论】:

  • 这个问题过于宽泛,关于 SO 处理清洁文本的问题很多。该套装包含 1790 件不同条件的物品,您需要清洁这些物品。删除标点符号和空格很容易,但您还需要删除文章文本之前的额外信息。此外,您需要删除文本和电子邮件地址中的 html 标记。
  • 使用 [python][string] clean 搜索 SO

标签: python string data-cleaning


【解决方案1】:

注意:这不是一个完整的答案,但以下内容至少可以帮助您:

  • 删除标点符号
  • 删除换行符
  • 删除连续的空白
  • 去掉括号
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

【讨论】:

  • 谢谢@randomfigure,但是,它不起作用。我收到以下错误:“str”对象没有属性“re”
猜你喜欢
  • 2015-08-18
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2013-04-14
  • 2011-06-22
  • 2014-07-17
  • 2011-07-28
相关资源
最近更新 更多