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

时间:2011-02-03 22:38:11

标签: python list search substring

我正在尝试运行一个程序,如果在某个索引范围内包含一个句点,它将为A找到一个新值。问题是,为了确定搜索的域,有必要在列表中分隔单词,例如('A','B','C','D','E' ,'F','G','A','B','C','D','E','F','G')。目的是让程序找到第一个A,搜索较小的列表('A B. 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)

3 个答案:

答案 0 :(得分:1)

此处不需要正则表达式,但正则表达式可行。记得特别是逃避点。然后记得使用原始字符串来逃避逃脱。 :)

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

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

答案 1 :(得分:1)

这会查找'。'在一个条目的末尾。

  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

答案 2 :(得分:1)

您似乎在这里解析句子。您是否考虑过使用Natural Language Toolkit for Python来执行此操作?