Найти - Пользователи
Полная версия: Работа со строками в файле
Начало » Python для новичков » Работа со строками в файле
1
python13
Привет! Есть база вида:

 -
20246569  HOST:		https://name.name
20246570  USER:		Login
20246571  PASS:		Password
  988549  Host: https://name.name
  988550  Login: Login
  988551  Password: Password
 8180514  HOST:		https://name.name
 8180515  LOG :		Login
 8180516  PWD :		Password
-

Каким образом я могу Найдя нужный мне Host/Url обратиться к двум строкам ниже найденного host/url?
Например для того, что бы из базы этого вида создать базу более простого вида log:pass

Как работать с файлами - понятно. Но как работать со строками в данном случае?
Поиск строки с нужным host/url имеется, но как обратиться к двум строкам под host/url - не понимаю(

Буду благодарен вашей помощи. Спасибо.

python13
Решил данным способом:

     with open("new5 (2).txt", "r") as file:
        for line in file:
            counter += 1
            if "name" in line:
                print(next(islice(file, counter + 1)).split(":")[1].lstrip(), end="")
                print(next(islice(file, counter + 2)).split(":")[1].lstrip(), end="\n")

Вывод:

Log
Pass

Log
Pass

Log
Pass

Log
Pass
py.user.next
python13
Каким образом я могу Найдя нужный мне Host/Url обратиться к двум строкам ниже найденного host/url?
Тут велика вероятность ошибки. Если ты так сделаешь, как ты сделал, то рано или поздно это даст какую-нибудь ошибку, а исправить её будет очень сложно, так как нужно будет программу заново писать.

Поэтому это надо сделать правильно изначально.

Соответственно,
1)
Ты должен сгруппировать записи по идентификаторам из первого поля. Велика вероятность, что под сайтом будут идти имя и пароль от другого сайта, потому что идентификаторы у сайта и имени и пароля разные.
2)
Все эти текстовые данные должны быть сначала преобразованы во внутренние питоновские данные. То есть у тебя не должно быть ни регистра, ни табуляций, ни двоеточий, ни дефисов, когда ты уже выбираешь нужные данные.

Поэтому сначала нужно сгруппировать строки по идентификаторам. Потом надо сгруппированные строки преобразовать в словари. А затем уже нужно из словарей выбирать группы (ссылка, имя, пароль). Тогда это всё будет работать надёжно и без ошибок.

А если ты просто хочешь по-быстрому выбрать текст, то тебе надо читать по три строки и всё.
1. Читаешь три строки.
2. Проверяешь первую строку.
3. Если первая строка подходит, то берёшь из второй строки имя, а из третьей строки пароль. Если первая строка не подходит, то отбрасываешь остальные две строки и читаешь снова три строки из файла.

Пример чтения файла по три строки и срабатывание действий на какой-то определённой строке.
  
>>> with open('/etc/passwd', encoding='utf-8') as fin:
...     while True:
...         line1 = next(fin, '')
...         line2 = next(fin, '')
...         line3 = next(fin, '')
...         if line1 == '':
...             break
...         if line1.startswith('adm'):
...             print(line1, end='')
...             print(line2[:line2.index(':')])
...             print(line3[:line3.index(':')])
... 
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp
sync
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB