Уведомления

Группа в Telegram: @pythonsu

#1 Май 27, 2015 03:24:12

Pytonist
Зарегистрирован: 2015-05-27
Сообщения: 36
Репутация: +  1  -
Профиль   Отправить e-mail  

Цикл запись в файл

Доброй ночи. У меня такой вопрос. Есть два списка (имена, фамилии) которіе тянутся из двуз разных URL соответственно. У меня задача, записать это все в файл в двух стлобцах. Имен ~450, фамилий ~20000. Только нужно чтобы когда список имен закончится, снова начинался с начала до тех пор, пока не закочатся фамилии.
Написал такой код c функцией zip(). Но запись остонавливается после окончания меньшего списка(имена):

import urllib.request
url1 = urllib.request.urlopen("https://...Name.txt").read()
url2 = urllib.request.urlopen("https://...LastName.txt").read()
dec1 = url1.decode()
dec2 = url2.decode()
sort1 = sorted(dec1.split())
sort2 = sorted(dec2.split())
with open(r"file.txt", "w") as plik:
    for i, l in zip(s1, s2):
        plik.write(i + "--" + l + "\n")

Пробовал писать через функцию map(), пишет “ValueError: too many values to unpack (expected 2)”:
import urllib.request
url1 = urllib.request.urlopen("https://...Name.txt").read()
url2 = urllib.request.urlopen("https://...LasName.txt").read()
dec1 = url1.decode()
dec2 = url2.decode()
sort1 = sorted(dec1.split())
sort2 = sorted(dec2.split())
def f(x, y):
    return x + y
with open(r"file.txt", "w") as plik:
    for i, l in map(f, s1, s2):
        plik.write(f)

Понимаю, говнокод ужасный Но я только учусь. Как здесь быть? Уже очень долго ломаю себе голову. Подскажите Спасибо!

Отредактировано Pytonist (Май 27, 2015 03:28:38)

Офлайн

#2 Май 27, 2015 03:35:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Цикл запись в файл

>>> import itertools
>>> 
>>> list(zip(itertools.cycle([1, 2, 3]), [4, 5, 6, 7, 8]))
[(1, 4), (2, 5), (3, 6), (1, 7), (2, 8)]
>>>



Офлайн

#3 Май 27, 2015 03:43:34

Pytonist
Зарегистрирован: 2015-05-27
Сообщения: 36
Репутация: +  1  -
Профиль   Отправить e-mail  

Цикл запись в файл

py.user.next
Огромное спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version