Использование регулярных выражений в python для нескольких текстовых файлов для анализа и сбора данных для добавления в Excel - PullRequest
0 голосов
/ 27 февраля 2020

Привет, я новичок в python и мне нужно работать с регулярным выражением.

У меня есть несколько файлов .txt в каталоге, который мне нужно проанализировать. В каждом из этих файлов .txt многократно встречается слово «инструкция». Мне нужно взять число, которое следует за словом «инструкция», и добавить его в список, который я буду отображать в Excel. Это сделано так, что у меня есть столбец «Инструкция» со всеми номерами команд, и у меня есть ряд всех имен файлов .txt. Мне нужно в конечном итоге поставить да или нет перед номером инструкции, если он присутствует в конкретном файле .txt.

Я хочу знать, как взять число, следующее за словом «инструкция», и добавить его в список (возможно). И используйте этот список позже, чтобы сформулировать файл Excel. Как написать эту инструкцию для регулярных выражений?

Это мой код

import csv  
import re    
import glob 
import os 

inst_num = []

os.chdir (r"C:\Users\10002\Desktop\work\scripts")
for file in glob.glob("*.txt"):
    with open (file, 'r') as f: 
        for line in f:
            inst = re.compile ('instruction:(\d+)',line)
            if inst.search(line) is not None:
                inst_num = inst.search(line).group(1)

1 Ответ

0 голосов
/ 29 февраля 2020

Во-первых, compile не принимает текстовую строку, которая должна быть найдена, в качестве второго аргумента (необязательный второй аргумент - это флаги, которые необходимо использовать, например, re.IGNORECASE). Во-вторых, вызов compile должен быть исключен из l oop, иначе вы отказываетесь от цели предварительной компиляции регулярного выражения. В-третьих, вы задаете несколько вопросов, которые обычно осуждаются. Я покажу вам, как создать список номеров. Если у вас есть отдельный вопрос о том, как создать из него файл CSV, опубликуйте отдельный вопрос.

import csv  
import re    
import glob 
import os 

inst_num = []
inst = re.compile('instruction:(\d+)') # compiled regex

os.chdir (r"C:\Users\10002\Desktop\work\scripts")
for file in glob.glob("*.txt"):
    with open (file, 'r') as f:
        for line in f:
            match = inst.search(line) # do the search once
            if match:
                inst_num.append(match.group(1)) # add to list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...