我正在编写一段代码,它将从运行文本中提取单词。此文本可以包含文本中可能存在的分隔符,如 \r、\n 等。
我想丢弃所有这些分隔符,只提取完整的单词。我怎样才能用 Python 做到这一点?任何可用于在 python 中处理文本的库?
我正在编写一段代码,它将从运行文本中提取单词。此文本可以包含文本中可能存在的分隔符,如 \r、\n 等。
我想丢弃所有这些分隔符,只提取完整的单词。我怎样才能用 Python 做到这一点?任何可用于在 python 中处理文本的库?
假设您对“单词”的定义与正则表达式模块 ( re
) 的定义一致,即字母、数字和下划线,这很容易:
import re
fullwords = re.findall(r'\w+', thetext)
有问题的字符串在哪里thetext
(例如,来自打开以供阅读f.read()
的文件对象的一个f
,如果这是您从中获取文本的地方)。
如果您以不同的方式定义单词(例如,您想包含撇号,例如“it's”将被视为“一个单词”),它并不难 - 只需用作findall
适当模式的第一个参数,例如r"[\w']+"
撇号案子。
如果您需要非常非常复杂(例如,处理在单词之间不使用中断的语言),那么问题会突然变得更加困难,您将需要一些第三方包,例如nltk。
假设您的分隔符是空白字符(如空格\r
和\n
),那么 basicstr.split()
会执行您想要的操作:
>>> "asdf\nfoo\r\nbar too\tbaz".split()
['asdf', 'foo', 'bar', 'too', 'baz']