【问题标题】:creating sub-strings from strings without referring index从字符串创建子字符串而不引用索引
【发布时间】:2014-06-04 18:27:40
【问题描述】:

假设我有一个类似

的字符串
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])。有可能吗?

【问题讨论】:

    标签: python string loops


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您应该使用 step 参数来使用递增 5 的索引,该索引作为第三个参数传递给 range() 内置函数(在 startstop 之后)。

      所以在这种情况下,您的第一个 for 循环将如下所示:

      for i in range(0, len(mystr), 5):
          tmp = mystr[i:i+5]            # changed from i-2:i+3
          sub_str.append(tmp)
      

      对于第二个 for 循环,再次从 0 开始并从 [i-2:i+3] 更改切片(并​​更新 if 条件中的字符索引,使其行为方式与原来的相同):

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

      我认为没有索引就不可能对字符串进行切片。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多