Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python isinstance不使用if语句。_Python_List_Isinstance - Fatal编程技术网

Python isinstance不使用if语句。

Python isinstance不使用if语句。,python,list,isinstance,Python,List,Isinstance,我有一张地址表。有些地址有街道、城市、州、邮政编码,其他地址只有城市、州和邮政编码。我为做了一个循环,将每个元素放入一个单独的变量中。问题是我没有得到正确的输出,因此我将if语句与isinstance(address[3],int],我这样做是为了检查第4个元素是否存在,然后执行代码,但它不起作用。我将在下面发布我正在做的事情,并让我知道我在哪里出错。第一个地址有一条街道,第二个没有,所以我想用“-”替换地址 您的想法基本正确。我认为最大的问题在于if语句中的条件,因为当只有3个元素时,addr

我有一张地址表。有些地址有街道、城市、州、邮政编码,其他地址只有城市、州和邮政编码。我为做了一个
循环,将每个元素放入一个单独的变量中。问题是我没有得到正确的输出,因此我将
if
语句与
isinstance(address[3],int]
,我这样做是为了检查第4个元素是否存在,然后执行代码,但它不起作用。我将在下面发布我正在做的事情,并让我知道我在哪里出错。第一个地址有一条街道,第二个没有,所以我想用“-”替换地址


您的想法基本正确。我认为最大的问题在于if语句中的条件,因为当只有3个元素时,
address[3]
将引发异常。相反,您应该使用
len()检查列表的长度
。如果列表的长度为3,则只能将城市、州和邮政编码转换为正确的变量。如果列表的长度为4,则可以获得所有4个字段。

您的想法基本正确。我认为最大的问题在于If语句中的条件,因为
地址[3]当只有3个元素时,
将引发异常。相反,您应该使用
len()
检查列表的长度。如果列表的长度为3,则只能将城市、州和邮政编码输入到正确的变量中。如果列表的长度为4,则获取所有4个字段。

第一行

address = [['123 street name, New Orleans, LA, 12345'],['New Orleans, LA, 12345']]
实际上,它的作用是创建一个列表列表,其中每个内部列表都包含一个字符串。我认为如果您编写:

addresses = [['123 street name', 'New Orleans', 'LA', '12345'],['New Orleans', 'LA', '12345']]
要检查这些字段是否存在,我会尝试

for address in addresses:
    if len(address) == 4:
        //case 1
    else:
        //case 2
如果您不想麻烦地将字符串拆分,以下行将转换您的地址:

addresses = [address.split(', ') for address in addresses]
第一行

address = [['123 street name, New Orleans, LA, 12345'],['New Orleans, LA, 12345']]
实际上,它的作用是创建一个列表列表,其中每个内部列表都包含一个字符串。我认为如果您编写:

addresses = [['123 street name', 'New Orleans', 'LA', '12345'],['New Orleans', 'LA', '12345']]
要检查这些字段是否存在,我会尝试

for address in addresses:
    if len(address) == 4:
        //case 1
    else:
        //case 2
如果您不想麻烦地将字符串拆分,以下行将转换您的地址:

addresses = [address.split(', ') for address in addresses]

您的代码有多个问题。首先,
address
是一个列表长度为1的列表。其次,如果您想检查地址是否包含邮政编码,您的两个示例都有,但您无法将其与其他数据分开访问,因为它现在存储为字符串。请尝试分离元素并实际存储将它们设置为字符串或整数。下一个问题是无法检查不存在的元素。如果知道必须存在其他数据,则可以检查列表的长度。总之,请使用以下更改:

addresses = [['123 street name', 'New Orleans', 'LA', 12345],['New Orleans', 'LA', 12345]]

for address in addresses:
    if len(address) > 3:
        street = address[0]
        city = address[1]
        city = city.lstrip()
        state = address[2]
        state = state.lstrip()
        zip_code = address[3]
    else:
        street = "-"
        city = address[0]
        city = city.lstrip()
        state = address[1]
        state = state.lstrip()
        zip_code = address[2]

您的代码有多个问题。首先,
address
是一个列表长度为1的列表。其次,如果您想检查地址是否包含邮政编码,您的两个示例都有,但您无法将其与其他数据分开访问,因为它现在存储为字符串。请尝试分离元素并实际存储将它们设置为字符串或整数。下一个问题是无法检查不存在的元素。如果知道必须存在其他数据,则可以检查列表的长度。总之,请使用以下更改:

addresses = [['123 street name', 'New Orleans', 'LA', 12345],['New Orleans', 'LA', 12345]]

for address in addresses:
    if len(address) > 3:
        street = address[0]
        city = address[1]
        city = city.lstrip()
        state = address[2]
        state = state.lstrip()
        zip_code = address[3]
    else:
        street = "-"
        city = address[0]
        city = city.lstrip()
        state = address[1]
        state = state.lstrip()
        zip_code = address[2]

首先需要在
处拆分地址,然后检查长度并将部分分配给值:

adress = '123 street name, New Orleans, LA, 12345'
parts = address.split(', ')
street, city, state, zip_code = parts if len(parts) == 4 else ['-'] + parts    

首先需要在
处拆分地址,然后检查长度并将部分分配给值:

adress = '123 street name, New Orleans, LA, 12345'
parts = address.split(', ')
street, city, state, zip_code = parts if len(parts) == 4 else ['-'] + parts    

你的代码是如何工作的?
address
没有第四个元素,所以你不能做
address[3]
。你会得到一个
索引器,因为你的列表只有两个元素。你的代码是如何工作的?
address
没有第四个元素,所以你不能做
address[3]
。您会得到一个
索引器,因为您的列表只有两个元素。非常好!ThanksWorks非常好!Thanksys这就是我遇到的问题。实际上,它没有抛出异常,而是以某种方式复制了上一个,只是复制了它。
len()是诀窍。@ KimikaseAggdFisher,你也应该首先考虑数据是如何获得的。如果是硬编码的,使用字典列表,而不是列表列表。是的,这就是我所遇到的问题。实际上它没有抛出异常,而是不知何故复制了以前的,只是复制了它。<代码> Le()是诀窍。@ KimikaseAggdFisher,你也应该首先考虑数据是如何获得的。如果是硬编码的,使用字典列表,而不是列表列表。