Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 11, 2012 23:50:36

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

random.choice

Чем отличается

f = open(r'file.txt')
line = random.choice(f.readlines())
f.close
line = line
от
line = 'случайно выбранная вручную строка из file.txt'
?
Скрипт не хочет корректно работать с первым вариантом.

Отредактировано webstghost (Июнь 11, 2012 23:50:55)

Офлайн

#2 Июнь 11, 2012 23:54:41

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

random.choice

>>> from random import choice
>>> def foo():
...     with open('file', 'r') as f:
...         print choice(f.readlines())
...         
>>> foo()
5
>>> foo()
2
>>> foo()
4

[00:54] home:~ cat file
1
2
3
4
5



Офлайн

#3 Июнь 12, 2012 04:54:28

webstghost
Зарегистрирован: 2012-06-02
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

random.choice

Я недостаточно ясно описал проблему.
Мой скрипт выбирает случайную строку без проблем, и ‘print line’ выдает ‘случайно выбранная вручную строка из file.txt’.
Но видимо формат данных отличается от того, если я просто задам значение для line:

line = 'случайно выбранная вручную строка из file.txt'
line в моем скрипте, это рандомный http заголовок.
Проблема в том, что при его случайном выборе запрос возвращает пустоту. Но если задать заголовок напрямую все проходи успешно. При этом ‘print’ выдает идентичные ‘line’ в обоих случаях.

Офлайн

#4 Июнь 12, 2012 05:58:10

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

random.choice

webstghost
Чем отличается
f = open(r'file.txt')
line = random.choice(f.readlines())
f.close
line = line
от
line = ‘случайно выбранная вручную строка из file.txt’
?
Скрипт не хочет корректно работать с первым вариантом.



Я недостаточно ясно описал проблему.
Мой скрипт выбирает случайную строку без проблем, и ‘print line’ выдает ‘случайно выбранная вручную строка из file.txt’.
Но видимо формат данных отличается от того, если я просто задам значение для line:
line = ‘случайно выбранная вручную строка из file.txt’
line в моем скрипте, это рандомный http заголовок.
Проблема в том, что при его случайном выборе запрос возвращает пустоту. Но если задать заголовок напрямую все проходи успешно. При этом ‘print’ выдает идентичные ‘line’ в обоих случаях.

Яснее не стало.

Функция random.choice принимает объект, поддерживающий протокол итератора, и возвращает “случайный” объект из переданного множества. У меня нет идей, как вы полагаете читатели должны вас понять. Приведите хотя бы ваш код,



Офлайн

#5 Июнь 12, 2012 08:44:59

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

random.choice

readlines() оставляет символ возврата строки ‘\n’:

>>> f.readlines()[0]
 '450\n'
Чтобы их не было:
f.read().splitlines()

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version