当我在Python Tutor上运行它时,我的代码一直显示错误:"太多解包"。我该如何解决这个错误?

时间:2018-04-28 23:59:04

标签: python python-2.7

这是我的代码:

big_str = "[41.386263640000003, -81.494450689999994]\t6\t2011-08-28 19:02:28\tyay. little league world series!\n[42.531041999999999, -82.90854831]\t6\t2011-08-28 19:02:29\ti'm at holiday inn express suites & hotel roseville mi (31900 little mack ave., at masonic blvd., roseville) \n[39.992309570000003, -75.131119729999995]\t6\t2011-08-28 19:02:29\t@_tweetthis what dorm r you in?\n[54.104106119999997, 28.336019929999999]\t6\t2011-08-28 19:02:29\t@andykozik круто !!!\n[25.787949600000001, -80.132949600000003]\t5\t2011-09-03 05:40:14\tpizza rustica #ftw"

# This breaks up a string of tweets into lists
def break_into_records(big_mess):
    rows = big_mess.split('\n')
    records = []
    for row in rows:
        records.append(row.split('\t'))
    for i in range(len(records)):
        records[i][0] = records[i][0].replace(' ','').strip('[]').split(',')
    return records

# This will loop over that list, and call a draw
# every time a word pops up
# as well as give you a word count
def count_words(word, data_structure):
    count = 0
    for loc, id, time, message in data_structure:
        if word in message:
            drop_pin(loc) # we pass cords to drop pin, no work to do
            count += message.count(word)
    return count

def drawGpsPoint(x):
  y = drop_pin(x)
  return y

def drop_pin(location):
    # this function needs to map the GPS cord to an x/y
    # so it can draw
    # but it has the GPS locs.
    lat, lon = location
    lat, lon = float(lat), float(lon)
    x = 500 - ((lat + 180) * 500.0/360)
    y = 500 - ((lon + 180) * 500.0/360)
    return lat, lon

a = break_into_records(big_str)
for x in a:
  drawGpsPoint(x)
  print("All Tweets Loaded")
  r = raw_input("Enter search word: ")

每次到达drop_pin(location)函数中的lat,lon时都会显示错误。在通过该行运行变量之前,是否需要先将变量分开?

2 个答案:

答案 0 :(得分:0)

您的break_into_records并未完全符合您的预期。第一次拨打drop_pin(location)时,您的位置为

[['41.386263640000003', '-81.494450689999994'], '6', '2011-08-28 19:02:28', 'yay. little league world series!']

请注意,我在尝试分配之前打印出location来确定这一点。

"解包的数量太多"错误是由于尝试将此内容分配给lat, long这一点没有意义。

您可能只想返回break_into_records函数的第一部分,或者您可能只想操作这些字符串的第一部分。

答案 1 :(得分:0)

您的break_into_records函数正在将您的字符串信息拆分为list个元素,其中坐标为第一个元素。

因此,要纠正该错误,您需要将drawGpsPoint(x)替换为:

drawGpsPoint(x[0])