我有这段代码:
corpus = "T1T2T3"
for character in corpus:
if character == 'T':
print character + corpus[corpus.index(character) + 1]
我只想打印所有的T&C及其后的字母。在这种情况下,它应该打印T1 T2 T3 - 而不是只打印T1 T1 T1。知道可能出现什么问题吗?
答案 0 :(得分:2)
使用enumerate
函数在迭代中包含索引:
for index, character in enumerate(corpus):
if character == 'T':
print character + corpus[index + 1]
或者,您可以使用正则表达式来查找所需的模式:
import re
for match in re.findall('T.', corpus): # a . in the regular expression pattern means "match any character"
print match
答案 1 :(得分:1)
执行corpus.index(character)
时,它始终会找到character
第一次出现的索引,因此它始终会返回0
。
当您遍历字符串时,您也可以使用enumerate()
来获取索引。示例 -
corpus = "T1T2T3"
for idx, character in enumerate(corpus):
if character == 'T' and (idx + 1) < len(corpus):
print character + corpus[idx + 1]
答案 2 :(得分:0)
string.index只获取字符串中字符的第一个次出现。您可以指定所需的事件编号;你必须保持这个。
或者,也许这样的事情就是你想到的,通过索引来踩过。
for char_pos in len(corpus):
if corpus[char_pos] == 'T':
print corpus[char_pos:char_pos+2]