python - 在文本字符串中查找单词(其中字母不连续)
问题描述
我想编写代码来在一长串文本中查找单词的特定实例,其中组成单词的字母不是相邻的,而是连续的。
我使用的字符串将有数千个字符长,但作为一个较短的示例...如果我想在以下字符串中查找单词“chair”的实例,其中每个字母与前一个字母的长度不超过 10 个字符。
dje c skjwid h l; 一个sdjak我mcope r kldrlkadkj
为了避免在大字符串中找到许多实例的问题,我更愿意将每两个字母之间的距离限制为 10。所以字符串 abc C abcabc H abc A abd I abc R中的单词 chair会计数。但是字符串 abc C abcabcabcabcabcabcabcabcab H jdke A lcnd I nadh R中的单词 chair不算数。
我可以用 python 代码做到这一点吗?如果是这样,我会很感激我可以使用的一个例子。
也许粘贴文本字符串或使用输入文件?让它搜索我想要的一个或多个单词,然后确定这些单词是否存在?
谢谢。
解决方案
下面的代码将做你想做的事:
will_find = "aaaaaaaaaaaaaaaaaaaaaaaabcCabcabcHabcAabdIabcR"
wont_find = "abcCabcabcabcabcabcabcabcabHjdkeAlcndInadhR"
looking_for = "CHAIR"
max_look = 10
def find_word(characters, word):
i = characters.find(word[0])
if i == -1:
print("I couldnt find the first character ...")
return False
for symbol in word:
print(characters[i:i + max_look+1])
if symbol in characters[i:i + max_look+1]:
i += characters[i: i + max_look+1].find(symbol)
print("{} is in the range of {} [{}]".format(symbol, characters[i:i+ max_look], i))
continue
else:
print("Couldnt find {} in {}".format(symbol, characters[i: i + max_look]))
return False
return True
find_word(will_find, looking_for)
print("--------")
find_word(wont_find, looking_for)
推荐阅读
- scala - 在分配给下划线时,这对于理解如何构建状态?
- javascript - 如何在没有for循环并基于开始和结束限制的情况下过滤对象数组
- java - ClientHandlerException:未找到 MIME 媒体类型 multipart/form-data
- delphi - AnsiPos 或 Pos 与 Delphi 中的结果不匹配
- linux - 如何在网络连接之前保持启动画面,直到 backgm 网络正常并进入 youtube 页面
- sql-server - Windows server 2012 r2 每次尝试还原数据库时都意外关闭
- c# - 使用 C# 暂时禁用操作系统中的进程
- qt - 如何将 Windows 上的 opencv DLL 添加到 QTCreator 项目?
- three.js - WebAudio 改变 Listener 和/或 Panner 的方向
- angular - 事件本机键盘显示未在 Ionic 3 中触发