- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 python 的正则表达式和 NLTK 处理各种文本 - 在 http://www.nltk.org/book- .我正在尝试创建一个随机文本生成器,但我遇到了一个问题。首先,这是我的算法:
输入一个句子作为输入-这叫做触发字符串-
获取触发字符串中最长的单词
在所有 Project Gutenberg 数据库中搜索包含此词的句子 - 无论大小写 -
返回包含我在第 3 步中提到的单词的最长句子
将Step 1和Step 4中的句子附加在一起
重复这个过程。请注意,我必须在第二句中获得最长的单词并继续这样等等-
到目前为止,我已经能够对前两个句子执行此操作,但我无法执行不区分大小写的搜索。古腾堡计划的整个句子数据库可通过 gutenberg.sents()
函数使用,但正则表达式 - 不区分大小写的搜索实际上是不可能的,因为 gutenberg.sents()
输出书中的句子如下-在列表格式的列表中-:
例子:莎士比亚的麦克白的所有句子都是通过打字调用的
import nltk
from nltk.corpus import gutenberg
gutenberg.sents('shakespeare-macbeth.txt')
进入python shell命令行,输出为:
[['[', 'The', 'Tragedie', 'of', 'Macbeth', 'by', 'William', 'Shakespeare', '1603', ']'],
['Actus', 'Primus', '.'], .......]
与 [威廉·莎士比亚的麦克白悲剧,1603 年] 和 Actus Primus。作为前两句。
无论是大写还是小写,我如何才能找到我要查找的单词?我迫切需要帮助,因为过去两天我一直在修补这个问题,它开始让我感到紧张。非常感谢。
最佳答案
给定一个单词列表 L
和一个目标单词 t
,
any(t.lower()==w.lower() for w in L)
以不区分大小写的方式告诉您 L 是否有单词 t。这样做当然更快
lt = t.lower()
any(lt==w.lower() for w in L)
由于 Python 不会将常量计算“提升”到循环之外,除非您自己提升它,否则它将重复执行。
给定一个列表列表lol
,包含t
的最长子列表可以通过以下方式找到
longest = max((L for L in lol if any(lt==w.lower() for w in L)), key=len)
如果多个子列表包含 t
并且具有相同的最大长度,这将给您第一个,碰巧。
关于python - 古腾堡项目 Python 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549910/
我是一名优秀的程序员,十分优秀!