Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 22, 2022 18:47:19

python13
Зарегистрирован: 2022-03-17
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

Привет, буду рад помощи!

Есть .txt с базой вида:

login:password
asdasd-!asd1321@


login2:password2
login3:password3

login+password
login4:password4
login5:password5

Нужно привести к виду:
login:password
login2:password2
login3:password3
login4:password4
login5:password5

Что мы сделали:
1) Очистили пустые строки
2) Очистили все строки, которые не имеют формат “text:text”

Вопрос:
Каким образом лучше всего реализовать это? Знаю, что вопрос не слишком трудный, но я хотел бы понять, как правильнее всего создавать подобные ‘функции-нормализаторы’. К тому же в силу неопытности есть сомнения при попытке написать самостоятельно в первый раз.

Спасибо.

Отредактировано python13 (Июнь 22, 2022 18:48:21)

Офлайн

#2 Июнь 22, 2022 19:07:49

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

python13
Каким образом лучше всего реализовать это?
грепом же



Офлайн

#3 Июнь 22, 2022 20:35:18

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

python13
Каким образом лучше всего реализовать это?
Для начала ударить того кто придумал такой формат хранения логина/пароля байдаркой по голове.
потому что у нас могут быть пароли и имена вида
“Pupirishe:” “upiPraol”
или
“+Pupirishe:” “:+PupiPraol-!”
Предположим что пароль и имена не могут содержать эти символы.
Тогда банально вам можно открыть файл, и в каждой строке заменить +/- на символ :
сделать это очень просто



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Июнь 22, 2022 21:20:31

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

Нужно нормализовать и почистить базу вида log:pass | Как?

python13
Что мы сделали:
1) Очистили пустые строки
2) Очистили все строки, которые не имеют формат “text:text”
Выбери все строки в формате
<правильная пара> ::= <строка> <двоеточие> <строка>

python13
я хотел бы понять, как правильнее всего создавать подобные ‘функции-нормализаторы’
Для этой задачи ты должен выбрать правильные строки за один проход. Шаблон можешь задать через регулярное выражение (модуль re).
Вообще же, задача может стоять сложнее и потребуется несколько проходов. Сначала чистишь один слой, потом чистишь второй слой, потом чистишь третий слой и так далее. А когда всё почищено, выбираешь из этого то, что надо. Бывает, что нужно что-то дописать к данным, чтобы легче было выбирать из них потом. Бывает, что нужно данные разметить как-то вспомогательно, чтобы при выборе правильных элементов не ошибиться.



Отредактировано py.user.next (Июнь 22, 2022 21:24:49)

Офлайн

#5 Июнь 22, 2022 21:45:52

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

Самое интересное как этот файл вообще считывается. По ходу он руками забивался. А значит что количество строк позволяет его руками вычистить быстрее чем питон выучить.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#6 Июнь 22, 2022 22:03:04

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

Нужно нормализовать и почистить базу вида log:pass | Как?

ZerG
Самое интересное как этот файл вообще считывается. По ходу он руками забивался.
Да это макетный файл. На нём, как на макете, пишется скрипт, а скрипт этот потом применяется к гигабайтным файлам. Соответственно, скрипт надо написать оптимально, а сам этот файл нафиг не нужен, он только для написания скрипта существует.



Офлайн

#7 Июнь 22, 2022 23:02:02

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

Не суть. Если у меня пароль 4 плюса 4 минуса и все через двоеточие?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#8 Июнь 22, 2022 23:28:13

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

Нужно нормализовать и почистить базу вида log:pass | Как?

ZerG
Если у меня пароль 4 плюса 4 минуса и все через двоеточие?
Всё сработает
<правильная пара> ::= <строка> <двоеточие> <строка>
Строку определяешь как множество подходящих символов
<строка> ::= <буква> | <цифра> | <специальный не двоеточие>
и так далее.

Можно и точнее определить: строку для логина и строку для пароля. Там уже можно ветвить их индивидуально. Читай форму Бэкуса-Наура.



Отредактировано py.user.next (Июнь 22, 2022 23:30:16)

Офлайн

#9 Июнь 23, 2022 01:14:25

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1352
Репутация: +  118  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

  
txt = '''login:password
asdasd-!asd1321@   
login2:password2
login3:password3
login+password
login4:password4
login5:password5'''
out = ''
def check_log(login):
    """проверяем логин, если норм возвращаем True"""
    return True
def check_pass(password):
    """проверка"""
    return True
for line in txt.splitlines():
    if line.count(':') == 1:
        login, password = line.split(':')
        if check_log(login) and check_pass(password):
            out += '{}:{}\n'.format(login, password)
#
print(out)

Офлайн

#10 Июнь 23, 2022 09:30:24

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Нужно нормализовать и почистить базу вида log:pass | Как?

+login6:-:password:
login7::+:password
login8:-:password:

и все пропало



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version