Python:TypeError:';int';对象不可下标,索引器:字符串索引超出范围

Python:TypeError:';int';对象不可下标,索引器:字符串索引超出范围,python,Python,如何标记/分离函数中传递的输入? 例如,如果12356作为输入传递,我想访问,比如说第三个符号,即3,我该怎么办? 我在函数中尝试了以下代码,但出现错误: print(s[2]) IndexError: 'int' object is not subscriptable 代码: 在另一个程序中,当我执行相同操作时,我得到一个错误: "IndexError: string index out of range" for the instruction print(s[2]) 谢谢主要问题在于以

如何标记/分离函数中传递的输入? 例如,如果
12356
作为输入传递,我想访问,比如说第三个符号,即
3
,我该怎么办? 我在函数中尝试了以下代码,但出现错误:

print(s[2]) IndexError: 'int' object is not subscriptable
代码:

在另一个程序中,当我执行相同操作时,我得到一个错误:

"IndexError: string index out of range" for the instruction print(s[2])

谢谢

主要问题在于以下
功能

def TestComponents(months, days, years, seps):
    print("\nTest Months FSA")
    # print(months.m[0][1])
    for input in ["", "0", "1", "9", "10", "11", "12", "13"]:
        print("'%s'\t%s" % (input, NDRecognize(input, months)))
    print("\nTest Days FSA")
    for input in ["", "0", "1", "9", "10", "11", "21", "31", "32"]:
        print("'%s'\t%s" % (input, NDRecognize(input, days)))
    print("\nTest Years FSA")
    for input in ["", "1899", "1900", "1901", "1999", "2000", "2001", "2099", "2100"]:
        print("'%s'\t%s" % (input, NDRecognize(input, years)))
    print("\nTest Separators FSA")
    for input in ["", ",", " ", "-", "/", "//", ":"]:
        print("'%s'\t%s" % (input, NDRecognize(input, seps)))


def TestDates(dates):
    print("\nTest Date Expressions FSA")
    for input in ["", "12 31 2000", "12/31/2000", "12-31-2000", "12:31:2000",
                  "1 2 2000", "1/2/2000", "1-2-2000", "1:2:2000",
                  "00-31-2000", "12-00-2000", "12-31-0000",
                  "12-32-1987", "13-31-1987", "12-31-2150"]:
        print("'%s'\t%s" % (input, NDRecognize(input, dates)))
您正在对这种类型的列表执行一个
for
循环
[“”、“0”、“1”、“9”、“10”、“11”、“12”、“13”]
,该列表在
第一个
元素中包含
1
空字符串。因此,在第一次迭代中,将一个空值传递给
NDRecognize(input,dates))
函数,进入每个
for
循环。这就是为什么
NDRecognize(输入,日期))
函数出错的原因


我希望你明白我说的话。谢谢。

主要问题在于以下
功能

def TestComponents(months, days, years, seps):
    print("\nTest Months FSA")
    # print(months.m[0][1])
    for input in ["", "0", "1", "9", "10", "11", "12", "13"]:
        print("'%s'\t%s" % (input, NDRecognize(input, months)))
    print("\nTest Days FSA")
    for input in ["", "0", "1", "9", "10", "11", "21", "31", "32"]:
        print("'%s'\t%s" % (input, NDRecognize(input, days)))
    print("\nTest Years FSA")
    for input in ["", "1899", "1900", "1901", "1999", "2000", "2001", "2099", "2100"]:
        print("'%s'\t%s" % (input, NDRecognize(input, years)))
    print("\nTest Separators FSA")
    for input in ["", ",", " ", "-", "/", "//", ":"]:
        print("'%s'\t%s" % (input, NDRecognize(input, seps)))


def TestDates(dates):
    print("\nTest Date Expressions FSA")
    for input in ["", "12 31 2000", "12/31/2000", "12-31-2000", "12:31:2000",
                  "1 2 2000", "1/2/2000", "1-2-2000", "1:2:2000",
                  "00-31-2000", "12-00-2000", "12-31-0000",
                  "12-32-1987", "13-31-1987", "12-31-2150"]:
        print("'%s'\t%s" % (input, NDRecognize(input, dates)))
您正在对这种类型的列表执行一个
for
循环
[“”、“0”、“1”、“9”、“10”、“11”、“12”、“13”]
,该列表在
第一个
元素中包含
1
空字符串。因此,在第一次迭代中,将一个空值传递给
NDRecognize(input,dates))
函数,进入每个
for
循环。这就是为什么
NDRecognize(输入,日期))
函数出错的原因


我希望你明白我说的话。谢谢。

您正在向您的方法传递一个
int
,而不是
str
。可以将其作为字符串传递
“123456”
,也可以将其转换为您的方法:
s=str(input)
谢谢您的回答。在这个程序中,即使在将输入转换为字符串之后,我也会遇到错误:“IndexError:字符串索引超出范围”。请看第119行:传递给该方法的数据的确切值是多少?在尝试访问它之前,您是否已尝试打印出来?实际上,您可以访问该索引处的字符串?是的,当我仅打印s(print(s))时,输出是正确的。但是,当我打印s[2](print(s[2])时,出现了一个错误“indexer-ror:string-index-out-range”但是
s
是什么?您正在向方法传递一个
int
,而不是
str
。可以将其作为字符串传递
“123456”
,也可以将其转换为您的方法:
s=str(input)
谢谢您的回答。在这个程序中,即使在将输入转换为字符串之后,我也会遇到错误:“IndexError:字符串索引超出范围”。请看第119行:传递给该方法的数据的确切值是多少?在尝试访问它之前,您是否已尝试打印出来?实际上,您可以访问该索引处的字符串?是的,当我仅打印s(print(s))时,输出是正确的。但是,当我打印s[2](print(s[2])时,出现了一个错误“indexer-ror:string-index-out-range”但是
s
是什么呢?