Мой код продолжает отображать ошибку, когда я запускаю его на Python Tutor, говоря: «Слишком много, чтобы распаковать». Как я могу исправить эту ошибку? - PullRequest
0 голосов
/ 29 апреля 2018

Это мой код:

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: ")

Показывает ошибку каждый раз, когда достигает значения lon в функции drop_pin (location). Нужно ли разделять переменные перед тем, как пропустить их через эту строку?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Ваша break_into_records функция разбивает вашу строковую информацию на list элементов с координатами, являющимися первым элементом.

Итак, чтобы исправить эту ошибку, вам нужно заменить drawGpsPoint(x) на:

drawGpsPoint(x[0])
0 голосов
/ 29 апреля 2018

Ваш 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 функции или, возможно, вы хотите работать только с первыми частями этих строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...