0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
1

Парсер для двух текстовых файлов

01.01.2020, 21:37. Показов 6696. Ответов 11

Author24 — интернет-сервис помощи студентам
Здравствуйте уважаемые программисты... Пожалуйста научите как создать парсер для текстовых файлов?
Имеется:
1. Файл со списком имен.
2. Файл где нужно найти эти имена, и удалить построчно все содержимое.

https://drive.google.com/open?... txGTPkq-re

например:
1.Из первого файла берется название [vesper_cutter*sirr_blade]
2.Во втором файле находится соответствующая с этим названием строка, полностью выделяется и удаляется со всем остальным хламом:
Кликните здесь для просмотра всего текста
item_begin weapon 52 [vesper_cutter*sirr_blade] item_type=weapon slot_bit_type={lrhand} armor_type=none etcitem_type=none delay_share_group=-1 item_multi_skill_list={} recipe_id=0 blessed=0 weight=1520 default_action=action_equip consume_type=consume_type_normal initial_count=1 maximum_count=1 soulshot_count=1 spiritshot_count=1 reduced_soulshot={} reduced_spiritshot={} reduced_mp_consume={} immediate_effect=1 ex_immediate_effect=0 drop_period=10 duration={-1;0} use_skill_distime=0 period=0 equip_reuse_delay=0 price=0 default_price=146873000 item_skill=[none] critical_attack_skill=[none] attack_skill=[none] magic_skill=[none] item_skill_enchanted_four=[s_focus_hp_dual4_80] capsuled_items={} material_type=steel crystal_type=s84 crystal_count=7050 is_trade=1 is_drop=1 is_destruct=1 is_private_store=1 keep_type=15 physical_damage=482 random_damage=10 weapon_type=dual can_penetrate=0 critical=8 hit_modify=0 avoid_modify=0 dual_fhit_rate=50 shield_defense=0 shield_defense_rate=0 attack_range=40 damage_range={0;0;40;120} attack_speed=325 reuse_delay=0 mp_consume=0 magical_damage=176 durability=-1 damaged=0 physical_defense=0 magical_defense=0 mp_bonus=0 category={} enchanted=0 base_attribute_attack={none;0} base_attribute_defend={0;0;0;0;0;0} html=[item_default.htm] magic_weapon=0 enchant_enable=1 elemental_enable=1 unequip_skill={} for_npc=0 item_equip_option={} use_condition={} equip_condition={} is_olympiad_can_use=1 can_move=0 is_premium=0 /**/ item_end
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2020, 21:37
Ответы с готовыми решениями:

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

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

Создание функции сравнение двух текстовых файлов по строкам в питоне
Нужна помощь.. я новичок мне нужно сделать сравнение двух текстовых документов по строчно, и после...

Программа для сравнения двух текстовых файлов
Составьте программу для сравнения двух текстовых файлов. Если файлы не совпадают, то на экран...

11
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
01.01.2020, 21:41 2
Какой формат первого файла? (Точное описание или аттач файла)
Какой формат второго файла? (Точное описание или аттач файла)
Пример под спойлером непригоден для анализа, потому что непонятно куда делись переносы строк.
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
01.01.2020, 21:48  [ТС] 3
формат в обоих файлах одинаковый... я думаю что это utf 8..
под примером в файле 2 это все одна целая строка.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,606
Записей в блоге: 13
01.01.2020, 21:51 4
Garry Galler, удовлетворены ответом?
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
01.01.2020, 22:55 5
Цитата Сообщение от Catstail Посмотреть сообщение
удовлетворены ответом?
Я его аттач (ссылку на google disk) не заметил сразу :-)
На форуме же принято нормальные аттачи делать, а не ссылками на внешние ресурсы.
------------------------------
Цитата Сообщение от Androlex Посмотреть сообщение
Файл где нужно найти эти имена, и удалить построчно все содержимое
1) Вопрос в том, что значит построчно, если в файле всего одна строка.
Что именно вы хотите удалить?
Берем, например, [vesper_cutter*sirr_blade] - ищем точное вхождение во втором файле и удаляем?
Ну дак это простым циклом с s.replace(sub) можно сделать.

Что-то более сложное? Читаем вопрос про "построчно".
Чтобы файл выглядел нормальным многострочным текстом делаем в текстовом редакторе замену \s+ на \r\n
После чего файл начинает выглядеть вот так:
Кликните здесь для просмотра всего текста
Код
item_begin
weapon
52
[vesper_cutter*sirr_blade]
item_type=weapon
slot_bit_type={lrhand}
armor_type=none
etcitem_type=none
delay_share_group=-1
item_multi_skill_list={}
recipe_id=0
blessed=0
weight=1520
default_action=action_equip
consume_type=consume_type_normal
initial_count=1
maximum_count=1
soulshot_count=1
spiritshot_count=1
reduced_soulshot={}
reduced_spiritshot={}
reduced_mp_consume={}
immediate_effect=1
ex_immediate_effect=0
drop_period=10
duration={-1;0}
use_skill_distime=0
period=0
equip_reuse_delay=0
price=0
default_price=146873000
item_skill=[none]
critical_attack_skill=[none]
attack_skill=[none]
magic_skill=[none]
item_skill_enchanted_four=[s_focus_hp_dual4_80]
capsuled_items={}
material_type=steel
crystal_type=s84
crystal_count=7050
is_trade=1
is_drop=1
is_destruct=1
is_private_store=1
keep_type=15
physical_damage=482
random_damage=10
weapon_type=dual
can_penetrate=0
critical=8
hit_modify=0
avoid_modify=0
dual_fhit_rate=50
shield_defense=0
shield_defense_rate=0
attack_range=40
damage_range={0;0;40;120}
attack_speed=325
reuse_delay=0
mp_consume=0
magical_damage=176
durability=-1
damaged=0
physical_defense=0
magical_defense=0
mp_bonus=0
category={}
enchanted=0
base_attribute_attack={none;0}
base_attribute_defend={0;0;0;0;0;0}
html=[item_default.htm]
magic_weapon=0
enchant_enable=1
elemental_enable=1
unequip_skill={}
for_npc=0
item_equip_option={}
use_condition={}
equip_condition={}
is_olympiad_can_use=1
can_move=0
is_premium=0
/**/
item_end

А теперь объясняем, что конкретно нужно удалять. От сих и до сих.
1
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
01.01.2020, 23:00  [ТС] 6
Ого, я впечатлен как вы разложили все по отдельным строкам... прошу прощения что не правильно представил формат строки.
Вот это все что Вы разложили - представляется как одна целая единственная огромная строка, которую и нужно удалить.)
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
02.01.2020, 01:45 7
Лучший ответ Сообщение было отмечено Androlex как решение

Решение

Попробуйте это. Работать будет небыстро на ваших 15 тысячах строк из-за того, что компиляция шаблона регулярки динамическая (иначе никак) по ходу итерации.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
with  open("2.txt",encoding="utf-16") as fd:
    text2 = fd.read() 
 
with open("1.txt") as fd:
    for pattern in fd:
        pattern = pattern.strip()
        if pattern:
            regex = "^(.+{}.+)$".format(re.escape(pattern))
            text2 = re.sub(regex,'',text2,flags=re.MULTILINE)
# удаление пустых строк
text2 = re.sub(r'\n\s*\n','\n',text2,re.MULTILINE)
# новый файл - можете указать имя прежнего файла
with open("2new.txt","w",encoding="utf-16") as f:
    f.write(text2)
1
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
03.01.2020, 20:42  [ТС] 8
Garry Galler, С уважением благодарю Вас! Cегодня протестирую и отпишусь с результатом...
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
04.01.2020, 04:10  [ТС] 9
Garry Galler, Вот это невероятно... все работает... потрясающе.. фантастика..) Вы мой герой!) Виртуальный волшебник!) Очень поражен насколько быстро и эффективно Вы откликнулись, и сделали все для решения моей задачи... Спасибо огромное! Духовного и материального богатства и процветания, счастья и дружбы, вдохновения и любви, познания и гениальных открытий желаю Вам...!
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
05.01.2020, 20:49  [ТС] 10
Garry Galler Посмотрите пожалуйста, что можно сделать с пустыми строками в конце файла...
прикрепляю получившийся файл после компиляции Вашим кодом ниже:

я пробовал вот это:
Кликните здесь для просмотра всего текста

string = open('file').readlines()

for i in string:
if not i.isspace():
print(i.replace('\n', ''))
---------------
with open('file.txt', 'r') as inf:
for line in inf:
if line.strip():
print(line)
with open('file.txt', 'r') as inf, open('outfile.txt', 'w') as out:
for line in inf:
if line.strip():
out.write(line)

но эти варианты не сработали...
Вложения
Тип файла: zip 2new.zip (338.5 Кб, 4 просмотров)
0
Эксперт Python
5418 / 3842 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
06.01.2020, 14:07 11
Лучший ответ Сообщение было отмечено Androlex как решение

Решение

Я посмотрю. Регулярка "\n\s*\n" не очень сработала как оказалось для пустых строк.

Добавлено через 25 минут
Замените строчку 12 на эту. Эта регулярка пустые строки удаляет.
Python
1
text2 = re.sub(r'(^\s*\r?\n){2,}','', text2,flags=re.MULTILINE)
1
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
06.01.2020, 22:17  [ТС] 12
Цитата Сообщение от Garry Galler Посмотреть сообщение
text2 = re.sub(r'(^\s*\r?\n){2,}','', text2,flags=re.MULTILINE)
Абсолютно сработало! Спасибо огромное!
0
06.01.2020, 22:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2020, 22:17
Помогаю со студенческими работами здесь

Разработка программы для для слияния двух текстовых файлов
Требуется программа для слияния двух текстовых файлов. Условие задачи: "Разработать программу...

Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не использовать. Дополнительных массивов и файлов не
Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не...

Сравнение двух текстовых файлов
Добрый вечер! Задачка такая стоит: Сравнить два текстовых файла. Определить одинаковые ли они? То...

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

Сравнение двух текстовых файлов
господа есть 2 файла txt как сравнить точно ли информация в первом совпадает со вторым

Слияние двух текстовых файлов
Ребят помогите плизз задали курсовую в универе на тему Разработать программу слияния двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru