在Python中用in运算符从单词列表中搜索子字符串

在Python中用in运算符从单词列表中搜索子字符串,python,list,search,substring,Python,List,Search,Substring,我正在尝试运行一个程序,如果在某个索引范围内包含一个期间,则该程序将为a查找一个新值。问题是,为了确定搜索的域,有必要在列表中分隔单词,例如('a','B','C','D','E','F','G','a','B','C','D','E','F','G')。目标是让程序找到第一个A,在较小的列表(“AB.C D”)中搜索“.”,如果找到了,则将变量分配给A的下一个实例。到目前为止,所有代码都有效,除了使用in运算符查找“.”,因为它将其视为“B”。这在应用程序中不起作用,因为不知道“B” 是否有任

我正在尝试运行一个程序,如果在某个索引范围内包含一个期间,则该程序将为a查找一个新值。问题是,为了确定搜索的域,有必要在列表中分隔单词,例如('a','B','C','D','E','F','G','a','B','C','D','E','F','G')。目标是让程序找到第一个A,在较小的列表(“AB.C D”)中搜索“.”,如果找到了,则将变量分配给A的下一个实例。到目前为止,所有代码都有效,除了使用in运算符查找“.”,因为它将其视为“B”。这在应用程序中不起作用,因为不知道“B”

是否有任何方法可以搜索“.”,即使它出现在未知文本旁边?我曾尝试使用正则表达式,但响应不好。这可能是我的错误造成的

words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G'
corpus = words.split()
index_A = corpus.index('A')
while '.' in corpus[index_A : index_A + 3]:
  # This does not seem to be picking up the '.' in 'b.' in isolation.  It will find
  # 'B.' but not '.' from corpus.
  index_A = corpus.index('A', index_A+1)

这里不需要正则表达式,但正则表达式可以工作。记住避开圆点,因为它很特别。然后记住使用原始字符串来转义。:)

while循环的问题是,您正在该切片中查找完全等于“”的项,而不是该切片中包含“”的项。更改为在每个项目内检查:

while any("." in x for x in corpus[index_A : index_A + 3]):

这将在条目末尾查找“.”

  words = 'A B. C D E F G A B C D E F G A B C D E F G A B C D E F G'
  corpus = words.split()
   for item in corpus:
    if item.endswith('.'):
     #logic

你似乎在这里分析句子。你有没有考虑过用这个来做这件事?

我不太明白你的意思。什么是“未知文本”,为什么foo中的“
”不起作用我认为一些示例代码或输入以及预期的输出可能会有所帮助。我认为他想将所述str对象移动到父对象,如果它是一个列表?@jbcurtin:Hmm。。。是 啊我不太明白的是('abc.D')列表,这是查找周期和移动数据的结果吗?是的,我认为他试图在一个过程中完成三件事。查找,检查是否有“”。-如果为true,将内容移动到父级?迈克尔,你能试着把问题分解成更多的部分吗?事实上,这就是问题所在。我正在寻找一个不出现在“.”附近的a值。(在4个位置内)只是键入了相同的内容。对不起,我不确定我是否理解您的回答。当涉及到其他评论时,我为没有使用代码而道歉。给你。words=('abc.cdefg'abc.defefefg'abc.defefg'abc.defefg')语料库=words.split()index_A=corpus.index('A')while.'在语料库中[index_A:index_A+3]:#这一行似乎没有单独拾取'B'中的'.',它将从语料库索引A=corpus.index('A',索引A+1)中找到'B',而不是'。@MichaelRauh:将代码移到问题上;希望我理解正确,你理解了。这应该很有效。我认为它看起来太具体了,但我没有想到for循环。谢谢你的帮助!我其实不知道这个存在。谢谢你指出这一点!这似乎与for循环的工作原理相同,但更易于阅读。我只是很惊讶,里面有这么具体的东西。我想我应该查一下BIF的名单。