Уведомления

Группа в Telegram: @pythonsu

#1 Май 3, 2012 19:29:09

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

string __iter__ ??

что-то туплю :)
Хочу: Передавать в функцию итератор букв, в качестве источника букв использовать файл или строку.
(нужно что-то типа scanf,fscanf а готовый модуль scanf выглядит ужасно)

Вопрос: Как для строки получить итератор

Просто был убежден, что если можно написать

for i in "abc":
print i
то можно написать и так:

itr="abc".__iter__()
for i in itr:
print i

Ан не выходит.


Еще более странно выглядит файл, который трудно представить как поток байт….

Я конечно могу написать:

def s_itr(some_string):
for i in some_string:
yield i
def f_tr(some_file):
for i in some_file:
for j in i
yield j

но согласитесь выглядит странно.



Отредактировано doza_and (Май 3, 2012 19:32:46)

Офлайн

#2 Май 3, 2012 19:38:26

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

string __iter__ ??

zz = iter('looooool')
for x in zz :
    print x

так-же могешь с модулем itertools поиграться , это ваще кульная штука



Офлайн

#3 Май 3, 2012 19:51:21

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

string __iter__ ??

О спасибо! а то уж совсем питон забыл. Теперь остался вопрос как представить файл как поток байт. Наверно просто доопределю класс…



Офлайн

#4 Май 3, 2012 22:54:22

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

string __iter__ ??

>Теперь остался вопрос как представить файл как поток байт.
как-то поподробнее бы Вы пожелание высказали. могу навскидку предложить для раздумий:

        with open(file, 'rb') as f: 
            for chunk in iter(lambda: f.read(chunk_size), ''): 

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version