我正在尝试运行一个程序,如果在某个索引范围内包含一个句点,它将为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)
答案 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来执行此操作?