0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
|
|
1 | |
Парсер для двух текстовых файлов01.01.2020, 21:37. Показов 6696. Ответов 11
Здравствуйте уважаемые программисты... Пожалуйста научите как создать парсер для текстовых файлов?
Имеется: 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
|
01.01.2020, 21:37 | |
Ответы с готовыми решениями:
11
Сравнение содержания двух текстовых файлов скрипт сравнения двух текстовых файлов Создание функции сравнение двух текстовых файлов по строкам в питоне Программа для сравнения двух текстовых файлов |
01.01.2020, 21:41 | 2 |
Какой формат первого файла? (Точное описание или аттач файла)
Какой формат второго файла? (Точное описание или аттач файла) Пример под спойлером непригоден для анализа, потому что непонятно куда делись переносы строк.
0
|
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
|
|
01.01.2020, 21:48 [ТС] | 3 |
формат в обоих файлах одинаковый... я думаю что это utf 8..
под примером в файле 2 это все одна целая строка.
0
|
01.01.2020, 22:55 | 5 |
Я его аттач (ссылку на google disk) не заметил сразу :-)
На форуме же принято нормальные аттачи делать, а не ссылками на внешние ресурсы. ------------------------------ 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
|
02.01.2020, 01:45 | 7 | |||||
Сообщение было отмечено Androlex как решение
Решение
Попробуйте это. Работать будет небыстро на ваших 15 тысячах строк из-за того, что компиляция шаблона регулярки динамическая (иначе никак) по ходу итерации.
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) но эти варианты не сработали...
0
|
06.01.2020, 14:07 | 11 | |||||
Сообщение было отмечено Androlex как решение
Решение
Я посмотрю. Регулярка "\n\s*\n" не очень сработала как оказалось для пустых строк.
Добавлено через 25 минут Замените строчку 12 на эту. Эта регулярка пустые строки удаляет.
1
|
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
|
|
06.01.2020, 22:17 [ТС] | 12 |
0
|
06.01.2020, 22:17 | |
06.01.2020, 22:17 | |
Помогаю со студенческими работами здесь
12
Разработка программы для для слияния двух текстовых файлов Выполнить слияние двух рассортированных текстовых файлов в третий упорядоченный файл. Сортировок не использовать. Дополнительных массивов и файлов не Сравнение двух текстовых файлов Сравнение двух текстовых файлов Сравнение двух текстовых файлов Слияние двух текстовых файлов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |