【问题标题】:Filtering words starting with '\' from Python从 Python 中过滤以 '\' 开头的单词
【发布时间】:2017-04-26 15:36:21
【问题描述】:

我正在从 twitter 获取推文,我想做词频,但要避免表情符号和奇怪的字符。我已经看到这个字符具有以下形式: u'*' 所以它们总是以 \ 开头,但是当我尝试将此字符作为过滤器时它不允许我,因为 \ 是一个特殊字符。你知道我怎样才能过滤这种词吗? 我附上我最常用的 10 个词:

 [(u'#ElClasico', 3311),
 (u'RT', 2839),
 (u'\ud83d', 1425),
 (u'#Messi', 1369),
 (u'\u2026', 1092),
 (u'Messi', 975),
 (u'Barcelona', 964),
 (u'\u2705', 948),
 (u'Most', 944),
 (u'500', 903)]

我想擦除 u'\ud83d'、u'\2026' 和 u'\2705'

【问题讨论】:

  • U+D83D 是代理项,表明您已经损坏了输入。 U+2026 是标点符号。您应该非常小心过滤您的输入——例如,您将如何处理重音字母?
  • 那么你有什么建议来删除不是单词的特殊字符?

标签: python string filter python-2.x tweepy


【解决方案1】:

如果你想过滤掉非拉丁字符,那么你可以利用库regex

from regex import VERSION1, UNICODE, compile

# remove non-Latin characters.
compile(ur'\p{^Latin}+', VERSION1 | UNICODE).sub('', YOUR_INPUT)

# remove non-Latin/non-space/non-punctuation characters.
compile(ur'[^\p{Latin}\p{Zs}\p{Po}]+', VERSION1 | UNICODE).sub('', YOUR_INPUT)

参考:

【讨论】:

  • 非常感谢,但问题是使用第一次编译我现在得到这个输出: 英语中最常用的单词是:[(u'', 10041), (u'ElClasico', 3311), (u'RT', 2839), (u'Messi', 2444), (u'Barcelona', 1011), (u'Most', 944), (u'Lionel', 872), (u 'goals', 834), (u'goal', 767), (u'th', 633)] 所以我想删除表情符号,而不仅仅是将它们更改为''
猜你喜欢
  • 2014-03-14
  • 2019-09-12
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多