Python字符串比较表现得好笑

时间:2015-03-25 20:09:13

标签: python string comparison

这很奇怪:

def separatewordsbycaps(word):
    """This custom template will add space to fields when it finds a capital letter.
    Ex. InstrumentDeployment --> Instrument Deployment"""

    wordList = list(word)

    spaceIndexes = [index for index, char in enumerate(wordList) if char.isupper() and index!=0]
    offset = 0
    space = "f"
    for idx, val in enumerate(spaceIndexes):
        print "1."+wordList[val+offset-1]+"!=" + space +"= " + str(wordList[idx+offset-1] != space)
        print type(wordList[val+offset-1])
        print type(space)
        if wordList[idx+offset-1] != space:
            wordList.insert(val+offset, space)
            offset += 1

    return ''.join(wordList)

print separatewordsbycaps("InstrumentfOutputfVariables")

输出:

1.f!=f= True
<type 'str'>
<type 'str'>
1.f!=f= True
<type 'str'>
<type 'str'>
InstrumentffOutputffVariables

我搜索互联网寻求帮助,也许我的代码有问题。请帮忙。

1 个答案:

答案 0 :(得分:1)

您没有比较您认为比较的内容。

你打印:

wordList[val+offset-1] != 'f'

但实际上你在比较:

wordList[idx+offset-1] != 'f'

请注意idxval之间的差异。

对于您的输入,第一个val11idx0,因此您打印的wordList[val+offset-1]确实是'f'因此等于space中的值,但实际上是与wordList[idx+offset-1] 's'进行比较。 's' != 'f'确实是True