-
Notifications
You must be signed in to change notification settings - Fork 0
/
busca_versão_8
107 lines (90 loc) · 4.85 KB
/
busca_versão_8
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import openpyxl
import re
import time
import datetime
def fazer_pesquisa():
filename = '/content/drive/MyDrive/01. DEV - MP - PESQUISA/Planilhas de pesquisa PJs de Infância.xlsx'
while True:
# Abra o arquivo e obtenha uma lista de nomes de abas
workbook = openpyxl.load_workbook(filename)
sheet_names = workbook.sheetnames
# Pergunte ao usuário a string a ser pesquisada
search_string = input('Digite o nome a ser pesquisado: ')
# Compile os padrões de regex
pattern = re.compile(search_string, re.IGNORECASE)
specific_pattern = re.compile(r'2021\.00257144')
# Variável para armazenar o nome da aba onde a string é encontrada
found_in_sheet = None
# Variável para armazenar as contagens de ocorrência
contador = 0
# Lista para armazenar os resultados
resultados = []
# Loop através de todas as abas
for sheet_index, sheet_name in enumerate(sheet_names):
sheet = workbook[sheet_name]
print(f"Pesquisando na aba \033[1m{sheet_index + 1}\033[0m: \033[1m{sheet_name}\033[0m")
# Loop através das linhas da aba atual
for row_index, row in enumerate(sheet.iter_rows(min_row=2, min_col=3, max_col=7, values_only=True), start=2):
# Verifica se estamos na quinta aba
#if sheet_index == 4:
# print(f"Conteúdo da linha na quinta aba, linha {row_index}: {row}")
# Converte o conteúdo da célula em strings apropriadas
row_contents = []
for col in row:
if isinstance(col, datetime.datetime):
col_str = col.strftime("%Y-%m-%d")
elif col is None:
col_str = ""
else:
col_str = str(col)
row_contents.append(col_str)
# Verifica se a string de pesquisa ou o padrão específico está presente em qualquer célula da linha
for cell_content in row_contents:
if pattern.search(cell_content) or specific_pattern.search(cell_content):
contador += 1
# Armazena o nome da aba onde a string é encontrada
found_in_sheet = sheet_name
# Adiciona o resultado à lista de resultados
resultados.append({
'sheet': sheet_name,
'line': row_index,
'excerpt': cell_content[:50], # Parte do trecho encontrado (primeiros 50 caracteres)
'full_row': row_contents # Linha completa onde o termo foi encontrado
})
# Imprime o número da linha e o conteúdo das outras colunas separados por '|'
print(f"String encontrada na aba '{sheet_name}', linha {row_index}: {' | '.join(row_contents)}")
break # Se a string for encontrada, não precisa procurar mais nesta linha
# Pausa de 1 segundos entre as pesquisas de abas
time.sleep(1)
# Se a string foi encontrada, imprima o nome da aba onde foi encontrada
if found_in_sheet:
print(f"A string foi encontrada na aba '{found_in_sheet}'.")
else:
print("A string não foi encontrada em nenhuma aba.")
print("\n" + "*" * 40)
#print(f"Quantidade de ocorrências: {contador} do termo {search_string}")
print(f"Quantidade de ocorrências do termo {search_string}: {contador}")
# Imprime os resultados detalhados
if resultados:
print("\nResultados encontrados:")
for resultado in resultados:
# Verifica se o padrão específico está presente
specific_match = specific_pattern.search(' '.join(resultado['full_row']))
specific_info = f"2021.00257144 encontrado" if specific_match else ""
# Inclui a variável específica no início do resultado
print(f"{specific_info} | **** Aba: \033[1m{resultado['sheet']}\033[0m, Linha: {resultado['line']}, Trecho: {resultado['excerpt']}")
print(f"\nLinha completa: {' | '.join(resultado['full_row'])}")
else:
print("Nenhum resultado encontrado.")
# Feche o arquivo
workbook.close()
# Perguntar ao usuário se deseja realizar outra pesquisa
resposta = input("Deseja pesquisar novamente? (SIM/NÃO): ").strip().upper()
if resposta == 'NÃO':
print("Encerrando a rotina de pesquisa.")
break
elif resposta != 'SIM':
print("Resposta inválida. Encerrando a rotina de pesquisa.")
break
# Chamar a função para iniciar a pesquisa
fazer_pesquisa()