Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.84/74: Рейтинг темы: голосов - 74, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91

Поиск в файлах по определенным словам

03.03.2015, 14:50. Показов 16040. Ответов 83
Метки нет (Все метки)

Здравствуйте!
питон не так давно изучаю поэтому имею некоторые сложности с написанием программы.имеются два больших текстовых файла.необходимо написать программу которая будет выполнять поиск в файлах по определенным словам и эти слова будет записывать а отдельный файл.подскажите как это написать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2015, 14:50
Ответы с готовыми решениями:

Поиск по словам в файлах
Доброго времени суток. Возникла задача, требующая поиска в текстовых файлах (txt & html) определенных слов\фраз (указанных...

Ограничить поиск по определенным словам
Здравствуйте. Подскажите пожалуйста как скрывать неприемлемые материалы в результатах поиска Или же как скрывать информацию по...

Поиск по словам в файлах с расширением *.mht
Здравствуйте! Подскажите, пожалуйста, как можно реализовать поиск по словам в нескольких файлах *.mht с последующим выводом этого...

83
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
12.03.2015, 12:16  [ТС]
разобрался в чем проблема.не закрыл просто этот файл в предыдущем цикле.все теперь работает
а чтобы потом эти данные дописать в файл нужно вместо принтов написать write?я просто так делаю он пишет ошибку
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.03.2015, 12:19
Значит не так пишите, запись в файлах у нас с Вами уже была неоднократно :-)
Файл должен быть открыт с возможностью записи.
Сама запись
filedesc.write(<chto pisat>)
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
12.03.2015, 12:23  [ТС]
пишет AttributeError str object has no attribute write
я пишу cut_all.write(pin.group(0))
и ниже
cut_all.write(num)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.03.2015, 13:29
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import re
 
cut_lines = open('pins.txt', 'r').readlines()
cut_all = open('pins.txt', 'r').read()
out = open('fil7.txt', 'w')
 
for line_cut in cut_lines:
    if "bit_vector(" in line_cut:
        pin = re.search('(\w+?):', line_cut)
        if pin:
            reComp = re.compile("(?:" + pin.group(0) + "\s+\()(.*?\n*.*)(?:\))")
            pin_search = reComp.search(cut_all)
            if pin_search:
                out.write(pin.group(0)+'\n')
                for num in pin_search.group(1).replace('\" &\r\n\t\t\t\"', "").split(","):
                    out.write(num+'\n')
1
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
12.03.2015, 14:35  [ТС]
еще один глупый вопрос от меня.сейчас мне необходимо из этого файла вывести только номера пинов.pins outside.txt
я написал код но он не совсем корректно работает
for i in pins outside:
pos=i.find(':')
pos2=i.find(',')
al=i[pos+1os2]
он выводит нужные цифры но помимо этого и другие символы из этого файла.подскажите как лучше изменить этот алгоритм
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.03.2015, 15:55
Что он должен вывести конкретно?
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
12.03.2015, 16:37  [ТС]
он должен вывести только численные значения пинов в столбик как они и в файле идут

Добавлено через 24 минуты
например
64
56
130
53
122
121
119
и так до конца файла
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.03.2015, 17:07
Это все уже делалось раньше.
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
13.03.2015, 11:53  [ТС]
на подобии чего хотя бы писать код,я посмотрел пока что не нашел похожего
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
16.03.2015, 11:35  [ТС]
Jabbson, ?
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
24.03.2015, 13:31  [ТС]
Здравствуйте,у меня возник вопрос как можно изменить данный алгоритм для того чтобы он копировал из любого количества файлов которое мы укажем, в другой файл.этот алгоритм просто написан только для одного файла
Цитата Сообщение от Jabbson Посмотреть сообщение
Код Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def copy2files(start, stop, infile, outfile):
with open(infile, 'r') as in_file, open(outfile, 'w') as out_file:
* * * * copy = False
* * * * for line in in_file:
* * * * * * if start in line.strip():
* * * * * * * * copy = True
* * * * * * * * out_file.write(line)
* * * * * * elif stop in line.strip():
* * * * * * * * copy = False
* * * * * * elif copy:
* * * * * * * * out_file.write(line)
* * in_file.close()
* * out_file.close()
copy2files('port', 'use ', 'fil1.txt', 'fil4.txt')
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2015, 13:45
Code
1
2
3
4
json@mbook:~/PycharmProjects/untitled2$ cat files.txt
a.txt
b.txt
c.txt
Python
1
2
3
4
5
with open('files.txt', 'r') as f:
    for line in f:
        current_file = open(line.strip(), 'w')
        current_file.write("this is file: " + str(line))
        current_file.close()
Code
1
2
3
4
5
6
7
8
9
10
json@mbook:~/PycharmProjects/untitled2$ ls -l
total 40
-rw-r--r--  1 json  staff    20B Mar 24 13:44 a.txt
-rw-r--r--  1 json  staff    20B Mar 24 13:44 b.txt
-rw-r--r--  1 json  staff    20B Mar 24 13:44 c.txt
-rw-r--r--  1 json  staff   186B Mar 24 13:40 files.py
-rw-r--r--  1 json  staff    18B Mar 24 13:34 files.txt
 
json@mbook:~/PycharmProjects/untitled2$ cat a.txt
this is file: a.txt
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
24.03.2015, 13:49  [ТС]
Jabbson, но тут же не учитываются параметры по каким должно происходить копирование в другой файл.
в предыдущей программе это было по параметрам 'port', 'use '

Добавлено через 1 минуту
задумка у меня такая что я могу подключить какое то количество файлов в которых нужно вырезать только определенные куски резать нужно с 'port', до 'use '.количество файлов может быть любым,количество файлов я задаю вручную
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2015, 14:06
а, все, я не так понял условие
у подключаемых файлов есть какое-то свойственное им качество - имя, расширение или еще что-то?
заранее известны какие файлы?
их нужно указывать в программе или задавать каждый раз вручную?
1
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
24.03.2015, 14:40  [ТС]
эти файлы заранее пишутся в программе имеют расширение txt,эти файлы имеют общую структуру[ATTACH]first.txt[/ATTACH].путь к этим файлам прописывается вручную к этим фалам.но их может быть не два а больше и тогда мы тоже пропишем путь вручную.далее программа должна производить поиск в каждом файле по определенным параметрам .эти параметры port( а другой параметр use STD.как только программа нашла эти параметры то весь кусок который находится между эти параметрами должен быть записан в отдельный файл
Вложения
Тип файла: txt 2.txt (8.7 Кб, 1 просмотров)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2015, 15:06
Сейчас передается один файл, а нужно несколько из какой-то директории.

значит нужно по какой-то маске эти файлы найти и обойти их все

Code
1
2
3
4
5
6
7
8
json@mbook:~/PycharmProjects/untitled2$ ls -l
total 32
-rw-r--r--  1 json  staff    20B Mar 24 13:44 a.txt
-rw-r--r--  1 json  staff    20B Mar 24 13:44 b.txt
-rw-r--r--  1 json  staff    20B Mar 24 13:44 c.txt
-rw-r--r--  1 json  staff   183B Mar 24 14:13 files.py
 
json@mbook:~/PycharmProjects/untitled2$ python
Python
1
2
3
4
5
6
7
8
9
>>> import glob
>>>
>>> for file in glob.glob("*.txt"):
...     print(file)
...
a.txt
b.txt
c.txt
>>> quit()
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
24.03.2015, 15:10  [ТС]
эти файлы лежат все в одной директории,нужно из них вырезать нужное содержание по двум параметрам и записать это содержание в другой файл.в программе которую вы только что показали параметров нет по поиску
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2015, 15:15
вырезание мы уже делали раньше, а тут пример того, как обойти несколько файлов. Что с ними при этом обходе делать - Ваш выбор, в примере я просто вывел их имена, вместо этого их можно передать их функции, которая была раньше и что-то откуда-то и куда-то читала и записывала.
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 91
24.03.2015, 15:41  [ТС]
вы имеете ввиду сделать вот так?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for file in glob.glob("*.txt"):
    def copy2files(start, stop, ,infile ,outfile):
        with open(infile,'r') as in_file,open(outfile,'w') as out_file:
            copy=False
            for line in in_file:
                if start in line.strip():
                    copy=True
                    out_file.write(line)
                elif stop in line.strip():
                    copy=False
                elif copy:
                    out_file.write(line)
    in_file.close()
copy2files('generic','use STD_1149_1',':=',';','D:\\jtag\\bsdl\\for PCI\\ad.txt','D:\\jtag\\bsdl\\for PCI\\3128at100.bsd','D:\\jtag\\bsdl\\for PCI\\cut bsdl files1111.txt')
Добавлено через 16 минут
Jabbson, но по такому алгоритму не корректно работает программа
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
24.03.2015, 19:25
но Вы же не используете нигде переменную file из
Python
1
for file in glob.glob("*.txt"):
и вообще как-то не понятно, что Вы тут сделали, честно говоря.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2015, 19:25

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

Реализовать поиск по словам в txt файлах ресурсов и выделить слово в richtexbox
Всем доброго времени суток. В общем. Пишу программу-справочник. Есть в ней разделы. Под каждый раздел в RichTextBox вставляется текст из...

Поиск заданной строки в файлах с определённым расширением
echo off setlocal :START SET /P str= Введите символьную строку: SET /P disk= Введите дисковый том: if /i &quot;%disk%&quot; ==...

Как добавить видео из YouTube на сайт по определённым словам или тегам?
Можно как-то организовать добавление видео из YouTube по определённым словам или по тегам, указанным к самим видео? Вот пример добавления...

Запись в два столбца значений, получаемых при обработке строк, найденных в файлах по двум ключевым словам
Мой вопрос: Есть команда: FOR /F &quot;tokens=3 delims=&gt;&lt;&quot; %%i in ('findstr &quot;/R250GB&quot; C:\11111\*.XML') do (echo.%%i&gt;&gt;C:\222\kod.txt) Есть...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru