Вобщем нужно из такого вида акков: mail@mail.ru password ----------------- Сделать mail@mail.ruassword Кто сможет помогите,заранее благодарен.
PHP: <?php $i = 1; foreach (file('mails.txt') as $line) { $line = trim($line); if ($line) { $i++; if (!($i % 2)) echo $line; else echo ';' . $line . "<br>\r\n"; } } ?> Без использования регулярок, прочих функций - только цикл и эхо.
Я опоздал Хотя у mailbrush'a, по-моему, что-то не то added: у него все то, просто я кривой Code: #!/usr/bin/env python3 import sys filename = sys.argv[1] emails = [] passwords = [] tmp = 1 for line in open(filename): if line.strip(): emails.append(line.strip()) if tmp % 2 == 1 else passwords.append(line.strip()) tmp += 1 for i in range(len(emails)): temp = emails[i] + ':' + passwords[i] print(temp, file = open("out.txt", "a")) in.txt Code: lala@mail.ru password1 coco@mail.ru password2 kaka@mail.ru password3 out.txt Code: lala@mail.ru:password1 coco@mail.ru:password2 kaka@mail.ru:password3 сделал чуть короче (
Code: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys # Водной файл берем либо из параметра при запуске скрипта, либо по дефолту input.txt # Запис производиться в файл output.txt try: filename = sys.argv[1] print "Используется файл с данными " + filename, except IndexError: print "Испольуется стандартный файл с данными input.txt", filename="input.txt" try: f1 = open(filename, "r") f2 = open("output.txt", "w") except IOError: print "Чёта я файл открыть немогу :(" exit(1) while 1: f2.write(f1.readline()[0:-1] + ':' + f1.readline()) print temp, sNull = f1.readline() if not sNull: break f2.close() f1.close() Вход Code: AdfsdA 222222 BsfsddfB 444444 CgjjjfggdfC 444444 Выход: Code: AdfsdA:222222 BsfsddfB:444444 CgjjjfggdfC:444444 Чем он лучьше скрипта написанного Fata1ex: 1. Code: for line in open(filename): if line.strip(): emails.append(line.strip()) if tmp % 2 == 1 else passwords.append(line.strip()) tmp += 1 Объем используемой оперативки на прямую хависит от объема вхоного файла - это Бэд 2. Code: for i in range(len(emails)): temp = emails[i] + ':' + passwords[i] print(temp, file = open("out.txt", "a")) Зачем столько раз открывать файл на дозапись ? PHP незнаю, так что тут молчу. PS. все сделано исключительно в образовательных целях, и только ради интереса
Ну или самый короткий вариант: PHP: <?php $i = 1; foreach (file('mails.txt') as $line) { $line = trim($line); if ($line) { $i++; echo $i % 2 ? ';' . $line . "<br>\r\n" : $line; } } ?>
cupper, ты не прав насчет первой претензии к фаталексу, он не читает файл в оперативку, конструкция open(filename) не читает файл, а получает хэндлер на него, а когда он делат for line in filehandler то там идет итератор и построчное чтение, так что это пох , насчет второго - это маленькие слабости py3k , там поправить -дело пары сек, нужно просто в print передавать хэндлер, но это так лирика И раз уж меряетесь пиписьками, то всуну и я свою кривую реализацию Code: #! usr/bin/env python #-*-encoding:cp1251-*- try: with open("input.txt") as inpt: with open("out.txt", "a") as out: account = {"mail":None, "password":None} for line in inpt: line = line.translate(None, "\r\n") if not line: out.write("{0}:{1}\n".format(account["mail"], account["password"])) account["mail"] = None account["password"] = None elif not account["mail"]: account["mail"] = line elif not account["password"]: account["password"] = line except Exception, e: print e на входе input.txt, на выходе будет out.txt P.S. cupper, понял что смутило в твоем коде - бесконечный цикл
Эм. Я ни с кем не мерился..и не претендовал на совершенство. Лишь на работоспособность. Так что низачет.
Да ладно Я пошутил, хз как назвать когда человеку попросившему написать парсер предлагают 1 реализацию на PHP и две реализации на Python
а причем тут хендел файла, я про списокписал про то что он весь файл в него сперва загоняет хороший цикл , а если чтото насторазивает в нем, то такой цикл взят из учебной литературы. Мне он оч даже приглянулся яж написал все только в учебных целях. Если я написал что в коде можно чтото сделать лучьше, это невкоем случае незначит что его кодил плохой кодер,... проста ленивый кодер )))
Я чаще всего именно так делаю, потому что впоследствии может понадобиться делать с данными что-то еще, тогда код изменить будет легче: пароли и мыла уже считаны в удобном виде и готовы к работе. Сейчас с телефона, утром могу оптимизировать. И если кто не понял, я согласен, что код не самый удачный и в определенных моментах будет вести себя плохо
аааааааа! сорри ) ток сейчас вспомнил, что обещал дописать Code: #!/usr/bin/env python3 tmp = 1 with open(str(input("Enter file name: "))) as fin: with open("out.txt", "a") as fout: for line in fin: if line.strip(): fout.write(line.strip() + ':') if tmp % 2 == 1 else fout.write(line) tmp += 1 вот вроде оптимизировано сделал меньше еще на строчку ps. cupper, жду замечаний ) с обработкой исключений иди доить корову уменьшил еще на строчку оО )