String.Strip 在第二个 for 循环中跳过一个字符

时间:2021-01-19 13:32:58

标签: python arrays python-3.x

出于某种原因,在我的数组中的第二个循环之后,代码出于某种原因跳过了一个字符。

我认为这是问题所在:

    for word in range(int(len(ShortArray))):
        localString = LongArray[word]
        #print(word)
        if localString[:2] == ShortArray[word]:
            print(LongArray[word])
            print(word)

完整代码如下:

kleuren = ["Rood","Geel","Groen","Blauw","Wit","Paars","Oranje","Zwart"]
KleurenShort = []

def splitArray(string):
    for lenght in range(int(len(string) / 2)):
        KleurenShort.append(string[:2])
        print(KleurenShort)
        string = string.strip(string[:2])
    return KleurenShort

def tekst_naar_kleur(string):
    return 0


def matchFirst2Letters(ShortArray,LongArray):
    for word in range(int(len(ShortArray))):
        localString = LongArray[word]
        #print(word)
        if localString[:2] == ShortArray[word]:
            print(LongArray[word])
            print(word)

matchFirst2Letters(splitArray("RoGeGrBl"),kleuren)

结果是:

['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'rB']
['Ro', 'Ge', 'rB', 'l']

应该什么时候:

['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'Gr']
['Ro', 'Ge', 'Gr', 'Bl']

1 个答案:

答案 0 :(得分:4)

问题在于 string.strip() 方法的使用。

'aaaaaabcdb'.strip('ab')

给出 'cd' 作为输入字符串中 'a' 和 'b' 的每个实例都被删除。你可以简单地通过索引去掉输入字符串的前两个字母:

'abcde'[2:] 会给 'cde'

在您的代码中实施的更正版本是:

kleuren = ["Rood","Geel","Groen","Blauw","Wit","Paars","Oranje","Zwart"]
KleurenShort = []

def splitArray(string):
    for lenght in range(int(len(string) / 2)):
        KleurenShort.append(string[:2])
        print(KleurenShort)
        string = string[2:]
    return KleurenShort

def tekst_naar_kleur(string):
    return 0


def matchFirst2Letters(ShortArray,LongArray):
    for word in range(int(len(ShortArray))):
        localString = LongArray[word]
        #print(word)
        if localString[:2] == ShortArray[word]:
            print(LongArray[word])
            print(word)

matchFirst2Letters(splitArray("RoGeGrBl"),kleuren)

哪个输出

['Ro']
['Ro', 'Ge']
['Ro', 'Ge', 'Gr']
['Ro', 'Ge', 'Gr', 'Bl']
Rood
0
Geel
1
Groen
2
Blauw
3

通过下面链接的评论中的答案,您的 splitArray 函数就变成了:

def splitArray(string):
    return [string[i:i+2] for i in range(0, len(string), 2)]
相关问题