在刮取和剥离地址时使用if语句检查索引长度时出现TypeError

2024-09-30 06:12:07 发布

您现在位置:Python中文网/ 问答频道 /正文

更新-已解决

我已经解决了这个问题,因为我意识到我需要一个len函数,而不是index函数(并且还使用int)。解决办法是:

 address = addressChunk[0] if len(addressChunk) == 3 else '-'
    addresses.append(address) 

原文

我正在浏览一个网站,业务地址通常遵循[地址、省代码、邮政编码],但有时输入的地址类似于[地址、省代码、邮政编码]或索引小于2的变体(假设为0、1、2)

我有下面的代码,根据逗号从列表中的索引中删除相应的值,如果列表索引等于2,则将其添加到变量中,否则它应该显示“-”,但我得到以下错误。请注意,当删除if语句时,代码在正常格式的地址上工作

# initiate storage
addresses = []
provinces = []
postalCodes = []

# grab container html with regex to find randomized result id
companies_div = soup.find_all('div', {'id': re.compile('result-id-.*')})

        for x in companies_div:

                #extract address class and split by comma
                addressChunk = x.find('div', class_='result__address').text.split(',')

                # assign first index (address) to addresses list if index equals 2
                address = addressChunk[0] if int(addressChunk.index) == int(2) else '-'
                addresses.append(address)

                # same as above but for second index
                province = addressChunk[1] if int(addressChunk.index) == int(2) else '-'
                provinces.append(province)

                postalCode = addressChunk[2] if int(addressChunk.index) == int(2) else '-'
                postalCodes.append(postalCode)

但是,我最终出现以下错误:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'

请注意,当我从公式中删除“int”时,即使格式正确的地址也会显示为“-”


Tags: 代码dividindexlenifaddressaddresses
1条回答
网友
1楼 · 发布于 2024-09-30 06:12:07

更新-已解决

我已经解决了这个问题,因为我意识到我需要一个len函数,而不是index函数(并且还使用int)。解决办法是:

 address = addressChunk[0] if len(addressChunk) == 3 else '-'
    addresses.append(address) 

相关问题 更多 >

    热门问题