Просмотр полной версии : Вытащить определенные фрагменты из txt
sultan128
06.05.2010, 02:52
Есть текстовый файл, предполжим такого вида:
"...Параметр -savehelps заставляет сохранить файл helps.txt. Фрагмент файла ROM=KJF5IDJGJ для иллюстрации: ... #RACE хранит шаблон, по которому создаются мобы определенной ROM=2JL7JVS9GJ разновидности (расы, вида и т.п.). ..."
Как вытащить то, что находится после "ROM=" в отдельный файл? чтобы на выходе был txt, содержий в себе:
KJF5IDJGJ
2JL7JVS9GJ
.............
Такая штука парсер называется
Есть текстовый файл, предполжим такого вида:
"...Параметр -savehelps заставляет сохранить файл helps.txt. Фрагмент файла ROM=KJF5IDJGJ для иллюстрации: ... #RACE хранит шаблон, по которому создаются мобы определенной ROM=2JL7JVS9GJ разновидности (расы, вида и т.п.). ..."
Как вытащить то, что находится после "ROM=" в отдельный файл? чтобы на выходе был txt, содержий в себе:
KJF5IDJGJ
2JL7JVS9GJ
.............
Проверь (мне лень)
<?php
$text =file_get_contents('txt.txt');
preg_match_all("#ROM=(.*)#iU",$text, $out );
$result = $out[1];
foreach($result as $value)
{
echo "$value <br />";
flush();
}
?>
Правда вывод не в файл сделал а на экран...если что- сам допишеш пару строчек сохранения файла ...
P.S. :D запостил бы в тематическом разделе в вопросах, получил бы на том ЯП который тебе ближе- а так мучайся- выбирай из этих вариантов что тебе предложили :D
#!/usr/local/bin/perl
open(F, 'in.txt');
$f = join('', <F>);
close(F);
@ar = $f =~ /ROM=(.+?)\s/g;
open(OUT, '>> oit.txt');
foreach (@ar)
{
print OUT "$_\n";
}
close(OUT);
это на руби, не тестировалось
infl=File.new("infile.txt","rb")
outfl=File.new("outfile.txt","a")
while !infl.eof do outfl.puts infl.gets.chop.split("ROM=")[1] end
outfl.close
infl.close
sultan128
06.05.2010, 04:58
Всем спс, заюзал последний вариант
Ребятки а кто мне поможет, очень нужно, нигде найти не могу парсера что бы делал из текста: user:86359b816ab3adff0ae96dbed4b7ddb6 в текст:
86359b816ab3adff0ae96dbed4b7ddb6:user
Заранее очень благодарен! Пойдет и php и perl
А еще лучше если парсер будет объединять 2 словаря, список юзеров и хэшей в:
86359b816ab3adff0ae96dbed4b7ddb6:user
login999
10.05.2010, 09:33
A Python ?
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
with open("input_1.txt") as inpt1:
with open("input_2.txt") as inpt2:
with open("out.txt", "w") as out:
for line in inpt1:
line = line.strip().split(":")
if len(line) == 2:
out.write("{0}:{1}\n".format(line[1], line[0]))
else:
print "BAD FORMAT {0}".format(":".join(line))
for line in inpt2:
line = line.strip().split(":")
if len(line) == 2:
out.write("{0}:{1}\n".format(line[1], line[0]))
else:
print "BAD FORMAT {0}".format(":".join(line))
Уже для двух файлов )
Спс, щас питон поставлю ,проверю, спасибо за заботу и помощ ;)
altblitz
10.05.2010, 10:02
Kusto!
пугаешь молодёжь RegEx-сами ))
написан код правильно.
A Python ?
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
with open("input_1.txt") as inpt1:
with open("input_2.txt") as inpt2:
with open("out.txt", "w") as out:
for line in inpt1:
line = line.strip().split(":")
if len(line) == 2:
out.write("{0}:{1}\n".format(line[1], line[0]))
else:
print "BAD FORMAT {0}".format(":".join(line))
for line in inpt2:
line = line.strip().split(":")
if len(line) == 2:
out.write("{0}:{1}\n".format(line[1], line[0]))
else:
print "BAD FORMAT {0}".format(":".join(line))
Уже для двух файлов )
пишет BAD FORMAT 86359b816ab3adff0ae96dbed4b7ddb1
BAD FORMAT 86359b816ab3adff0ae96dbed4b7ddb2
BAD FORMAT user1
BAD FORMAT user2
login999
10.05.2010, 10:17
пишет BAD FORMAT 86359b816ab3adff0ae96dbed4b7ddb1
BAD FORMAT 86359b816ab3adff0ae96dbed4b7ddb2
BAD FORMAT user1
BAD FORMAT user2
Конешн, слава богу что додумался сделать проверку )))
Чет мну кажется что я тебя не совсем верно понял.
#!/usr/bin/env python
#-*-encoding:UTF-8-*-
with open("input_1.txt") as inpt1:
with open("input_2.txt") as inpt2:
with open("out.txt", "w") as out:
while True:
try:
part_one = inpt1.next().strip()
part_two = inpt2.next().strip()
out.write("{0}:{1}\n".format(part_one, part_two))
except StopIteration:
print "FINISHED"
break
raw_input()
Попробуй так.
Прошлый же делает замену как ты хотел + делает это для двух файлов и пишет в третий.
Спасибо большое добрый человек, в этот раз все прекрасно заработало, то что надо!
login999
10.05.2010, 10:22
Спасибо большое добрый человек, в этот раз все прекрасно заработало, то что надо!
Не за что.
P.S. Плохо искал, я когда-то такое писал, годика полтора назад.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot