Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/35: Рейтинг темы: голосов - 35, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7

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

01.01.2020, 21:37. Показов 7353. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.01.2020, 21:37
Ответы с готовыми решениями:

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

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

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

11
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.01.2020, 21:41
Какой формат первого файла? (Точное описание или аттач файла)
Какой формат второго файла? (Точное описание или аттач файла)
Пример под спойлером непригоден для анализа, потому что непонятно куда делись переносы строк.
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
01.01.2020, 21:48  [ТС]
формат в обоих файлах одинаковый... я думаю что это utf 8..
под примером в файле 2 это все одна целая строка.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,733
Записей в блоге: 14
01.01.2020, 21:51
Garry Galler, удовлетворены ответом?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.01.2020, 22:55
Цитата Сообщение от Catstail Посмотреть сообщение
удовлетворены ответом?
Я его аттач (ссылку на google disk) не заметил сразу :-)
На форуме же принято нормальные аттачи делать, а не ссылками на внешние ресурсы.
------------------------------
Цитата Сообщение от Androlex Посмотреть сообщение
Файл где нужно найти эти имена, и удалить построчно все содержимое
1) Вопрос в том, что значит построчно, если в файле всего одна строка.
Что именно вы хотите удалить?
Берем, например, [vesper_cutter*sirr_blade] - ищем точное вхождение во втором файле и удаляем?
Ну дак это простым циклом с s.replace(sub) можно сделать.

Что-то более сложное? Читаем вопрос про "построчно".
Чтобы файл выглядел нормальным многострочным текстом делаем в текстовом редакторе замену \s+ на \r\n
После чего файл начинает выглядеть вот так:
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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  [ТС]
Ого, я впечатлен как вы разложили все по отдельным строкам... прошу прощения что не правильно представил формат строки.
Вот это все что Вы разложили - представляется как одна целая единственная огромная строка, которую и нужно удалить.)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
02.01.2020, 01:45
Лучший ответ Сообщение было отмечено 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  [ТС]
Garry Galler, С уважением благодарю Вас! Cегодня протестирую и отпишусь с результатом...
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
04.01.2020, 04:10  [ТС]
Garry Galler, Вот это невероятно... все работает... потрясающе.. фантастика..) Вы мой герой!) Виртуальный волшебник!) Очень поражен насколько быстро и эффективно Вы откликнулись, и сделали все для решения моей задачи... Спасибо огромное! Духовного и материального богатства и процветания, счастья и дружбы, вдохновения и любви, познания и гениальных открытий желаю Вам...!
0
0 / 0 / 0
Регистрация: 01.01.2020
Сообщений: 7
05.01.2020, 20:49  [ТС]
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
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.01.2020, 14:07
Лучший ответ Сообщение было отмечено 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  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
text2 = re.sub(r'(^\s*\r?\n){2,}','', text2,flags=re.MULTILINE)
Абсолютно сработало! Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 22:17
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru