ValueError:使用str.index时未找到子字符串

时间:2017-08-31 07:11:58

标签: python string indexing

我是python的初学者,我正在尝试以下代码

input_number = raw_input("Please input the number:")
print type(input_number)
if(input_number.index('0')):
    print "Not Accepted"
else:
    print "Accepted"

当我给出输入例如'1234506'时,它显示“未接受”,这是有效但当我给'123456'时它的投掷错误“未找到子串”。 那么如何打印else部分呢。

3 个答案:

答案 0 :(得分:3)

当您输入123456或1234506时,python将其视为字符串。

现在,当您使用string_object.index(substring)时,它会在string_object中查找substring(在您的情况下,子字符串为'0')的出现。如果存在'0',则该方法返回子串存在的索引,否则抛出错误。

您可以使用以下代码:

if '0' in input_number :
    print 'not accepted'
else :
    print 'accepted'

答案 1 :(得分:1)

没有匹配时

str.index错误。在这种情况下,您可以选择处理错误,或者使用str.find代替返回-1和len(input_number)之间的整数值,或者对原始字符串执行集合成员资格测试。

选项1

转换为set查询:

if '0' not in set(input_number):
    print "Accepted"
else:
    print "Not accepted"

选项2

使用try...except来处理ValueError

try:
    input_number.index('0')
    print "Not accepted"

except ValueError:
    print "Accepted"

选项3

使用str.find

if input_number.find('0') < 0:
    print "Accepted"
else:
    print "Not accepted"

答案 2 :(得分:0)

我在x中找到了字符串但没有找到 如果x.index('invoke'):

ValueError:找不到子字符串

import os
def readAllFile(currentPath, outFile):
    fileList = os.listdir(currentPath)
    for name in fileList:
        fileName = currentPath + "/" + name
        if (os.path.isfile(fileName)):
            if ".smali" in fileName:
                f = open(fileName, "r")
                fileContent = f.read()

                for x in fileContent:
                    if x.index('invoke'):
                        outFile.write(x)


        else:
            if (os.path.isdir(fileName)):
                readAllFile(fileName, outFile)



pass

resultFile = open("smali.txt", "w")

readAllFile("/home/dieuthuy/Khoa-luan-tot-nghiep/dich-nguoc/Stick/smali", resultFile)

resultFile.close()

print('done!')