-3

我对 python 和一般编码是全新的。谁能理解我为什么会收到这个 IndexError?

Traceback (most recent call last):
  File "\\Mac\Home\Desktop\Python\Lab1\lab1_querystring.pageresults.addresssplit.headersadded.columnsadded.keysaddedtodictionary.py", line 54, in <module>
    city = splitaddress[1]
IndexError: list index out of range

我试图从中提取每个 if 语句/套件的列表有四个项目,但由于某种原因,它一直告诉我列表索引超出范围。

for listing in splititems:
    name = parse(listing,"itemprop=\"name\">","<").strip() # extract the business name

    # Try to extract the address into its constituent parts - street address, city, postal, see if you can put them into different columns in excel
    address = parse(listing,"<div class=\"ltext\" itemprop=\"address\" itemscope itemtype=\"http://schema.org/PostalAddress\">","</div>").strip() # extract the address
    splitaddress = address.split(',')

    streetaddress = splitaddress[0]
    city = splitaddress[1]
    postalcode = splitaddress[2]

    if len(splitaddress) >= 0:
            print splitaddress[0]

    if len(splitaddress) >= 1:
            print splitaddress[1]

    if len(splitaddress) >= 2:
            print splitaddress[2]

    phone = parse(listing,"itemprop=\"telephone\" content=\"","\"/>").strip() # extract the phone number

    print name, address, phone # take this out when you're finished your script - this is just for testing
    resultlist.append({'businessname':name,'streetaddress':streetaddress, 'city':city, 'postalcode':postalcode, 'phone':phone})
    del name,streetaddress,city,postalcode,phone
4

1 回答 1

0

您的地址不包含逗号,而是另一个分隔符:

In [1]: address = "Mr. Foo; Spam street 42; Eggsville"

In [2]: address.split(',')
Out[2]: ['Mr. Foo; Spam street 42; Eggsville']

如果您将其分配给splitaddress,则除此之外的所有内容splitaddress[0]都会引发IndexError.

len(splitaddress) > 1在继续之前检查。

于 2017-03-04T07:13:46.227 回答