Уведомления

Группа в Telegram: @pythonsu

#1 Июль 10, 2017 22:01:32

xeyalxx
Зарегистрирован: 2017-07-10
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Хуй Dick

Хуй Dick

Отредактировано xeyalxx (Май 11, 2018 23:00:42)

Офлайн

#2 Июль 10, 2017 23:52:07

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

Хуй Dick

а файл такой:

 127561953:True
582514953:False
149535825:False
674938631:True

или такой?
 127561953 : True
582514953 : False
149535825 : False
674938631 : True

“Нужно чтобы полученный с сервера user_id” Каким образом полученный?

От этого зависит ответ.

Но по любому вам надо посмотреть что такое dict, for, print.




Отредактировано doza_and (Июль 10, 2017 23:55:17)

Офлайн

#3 Июль 11, 2017 00:17:11

pcz
Зарегистрирован: 2017-07-10
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Хуй Dick

 FILENAME = 'something.txt'
data = open(FILENAME)
parsed_data = {}
for l in data:
  splitted = l.split(':')
  k = splitted[0].strip()
  v = True if splitted[1].strip() == 'True' else False
  parsed_data.update({k: v})


В итоге у тебя будет дикт из которого можно выбирать значения или получать эксепшон если значения нету.

Upd: Пофиксил кривой вариант, как-то я затупил очень

Отредактировано pcz (Июль 11, 2017 01:10:40)

Офлайн

#4 Июль 11, 2017 00:21:37

xeyalxx
Зарегистрирован: 2017-07-10
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Хуй Dick

Хуй Dick

Отредактировано xeyalxx (Май 11, 2018 22:56:52)

Офлайн

#5 Июль 11, 2017 00:24:23

xeyalxx
Зарегистрирован: 2017-07-10
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Хуй Dick

Dick хуй

Отредактировано xeyalxx (Май 11, 2018 22:57:07)

Офлайн

#6 Июль 11, 2017 00:40:10

pcz
Зарегистрирован: 2017-07-10
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Хуй Dick

xeyalxx
Спасибо, но не мог бы ты немного пояснить этот код?
Та версия была с ошибкой Я исправил и вроде теперь код не выглядит магией, но всё таки напишу.
1. Загружаем файл с именем FILENAME в память (осторожно! Если файл очень огромный, то это уже проблема и идти другим путем!)
data = open(FILENAME)
2. Создаем словарь в виде {идентификатор: bool-значение}. Словрь создается с помощью list comprehension для словаря (уж сорри, не знаю как на русском это называть). В python по объекту файла можно итерироваться построчно. Каждый раз когда получаем строчку, её нужно разделить на две части по символу ‘:’ (splitted = l.split(':')) и обработать вторую часть с логическим значением. Потом запихнуть запись в словарь parsed_data.update()

Офлайн

#7 Июль 11, 2017 00:40:28

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

Хуй Dick

xeyalxx
меньше мороки с лишними пробелами.
Если вы сами его делаете, то как раз без пробелов больше мороки. С пробелами это валидный yaml формат и его можно считать так:

 import yaml
data = yaml.load(open("some.txt","r"))
да и записать его проще.
Вообще “стандартные” форматы лучше по многим причинам.



Отредактировано doza_and (Июль 11, 2017 00:42:34)

Офлайн

#8 Июль 11, 2017 00:53:10

pcz
Зарегистрирован: 2017-07-10
Сообщения: 4
Репутация: +  1  -
Профиль   Отправить e-mail  

Хуй Dick

doza_and
Если вы сами его делаете, то как раз без пробелов больше мороки. С пробелами это валидный yaml формат и его можно считать так:

import yaml
data = yaml.load(open(“some.txt”,“r”))
да и записать его проще.
Вообще “стандартные” форматы лучше по многим причинам.

Яростно поддерживаю этого господина. Если можно самому выбирать формат, то берите json или yaml!

Офлайн

#9 Июль 11, 2017 02:46:00

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

Хуй Dick

Общий вариант обработки входных данных и перевода их в удобные данные

  
>>> import re
>>> 
>>> text = """
... 127561953:True
... 582514953:False
... 149535825:False
... 674938631:True
... """
>>> 
>>> pat = r'(\d+):(\S+)'
>>> 
>>> out = re.findall(pat, text)
>>> out
[('127561953', 'True'), ('582514953', 'False'), ('149535825', 'False'), ('674938631', 'True')]
>>> 
>>> dct = dict(out)
>>> dct
{'127561953': 'True', '674938631': 'True', '582514953': 'False', '149535825': 'False'}
>>> 
>>> '127561953' in dct
True
>>> dct['127561953']
'True'
>>>



Отредактировано py.user.next (Июль 11, 2017 02:51:19)

Офлайн

#10 Июль 11, 2017 10:30:32

xeyalxx
Зарегистрирован: 2017-07-10
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Хуй Dick

Вы все тут пидорасы

Отредактировано xeyalxx (Май 11, 2018 22:57:31)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version