【问题标题】:How to remove all words matching a pattern, except certain words which I want to preserve?(they match the pattern)如何删除与模式匹配的所有单词,除了我想保留的某些单词?(它们匹配模式)
【发布时间】:2017-07-16 09:12:11
【问题描述】:

所以我想从语料库中删除一个模式,但是有些单词与我想保留的模式相匹配。我有一个此类单词的列表,并且可以删除与该模式匹配的所有单词。

但是,我如何保留列表中的单词,并删除任何其他匹配该模式的单词?

谢谢。

【问题讨论】:

  • 你能发布你目前得到的代码吗?
  • 是的,我将启动笔记本。但是,与此同时,我正在做的只是使用re.sub 来匹配其中包含@ 的单词
  • 我想要删除所有这些单词,但保留一些与模式匹配的单词。我有一个列表
  • 我正在这样做:def replace_in_str(string): return ' '.join(re.sub("([^0-9A-Za-z \t])|(\w+:\/\/\S+)"," ",string).split()) 然后简单地说,tweets["Message"]=tweets["Message"].apply(replace_in_str) 我也从 SO 那里得到了这个替换。

标签: python regex words


【解决方案1】:

你可以使用设置交集

import re
s = 'Philip Hammond under pressure after claiming that public sector workers are overpaid'
s1 = re.sub("[^\w]", " ",  s).split()

那你去

d1 = ['Philip', 'Hammond']

print (set(s1).intersection(d1))

终于

{'Philip', 'Hammond'}

【讨论】:

  • 我想我的问题措辞有误。如果我们取 s1 和 d1 的交集,我会保留 d1 和 s1 中的共同词。当我已经替换了 patterns 时,这将返回一个空集。工会会给我我想要的结果。
猜你喜欢
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多