从字符串创建子字符串而不引用索引

时间:2014-06-04 18:27:40

标签: python string loops

假设我有一个像

这样的字符串
mystr = 'ABCDEFGHIJKLMNOPQRSTYWXYZ'

假设我想创建一个包含5个字符的子串,那么可能的答案是

for i in range(len(mystr)):
    tmp = mystr[i-2:i+3];
    sub_str.append(tmp)

另一个案例是: 如果我需要为特定条件创建子串,例如:

,该怎么办?
for i in range(len(mystr)):
    if mystr[i] == 'L':
        tmp = mystr[i-2:i+3]
        sub_str.append(tmp)

这很容易,但我想要另一种出路,那就是我不想以任何形式使用索引方法(如mystr [i-2:i + 3])。有可能吗?

2 个答案:

答案 0 :(得分:0)

您应该使用step参数来使用递增5的索引,该索引作为第3个参数传递到range()内置函数中(在start和{{1之后) }})。

因此,在这种情况下,您的第一个stop循环将如下所示:

for

对于第二个for i in range(0, len(mystr), 5): tmp = mystr[i:i+5] # changed from i-2:i+3 sub_str.append(tmp) 循环,再次从0开始并从for更改切片(并​​更新[i-2:i+3]条件中的字符索引,使其行为与原始循环相同):

表示范围内的i(0,len(mystr),5):     如果mystr [i + 2] =='L':         tmp = mystr [i:i + 5]         sub_str.append(TMP)

我认为没有索引就可以切片。

答案 1 :(得分:0)

在条件的情况下,如果您不想在代码中使用for循环,则可以使用string.find()方法。您的代码将如下所示:

substr_start = my_str.find("L") - 2
substr.append(my_str[substr_start:substr_start+5])

请记住,string.find方法只返回子字符串出现的第一个索引。