Jump to content

Thanael

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    217
  • Ingressou

  • Última visita

  • Dias Ganhos

    28

Tudo que foi postado por Thanael

  1. Olá @Jose Eugenio Ramos tudo bem? Segue abaixo uma maneira mais prática para percorrer pelos arquivos pdf de uma pasta. import re import os # Caminho da pasta path = r'C:\Users\thanael.butewicz\Documents\documentos efetivacao' # Percorrer somente pelos arquivos .pdf for file in os.listdir(path): if re.search('pdf', file): print(file) Agora sobre a leitura dos arquivos e encontrar determinadas partes que você precisa, irei deixar alguns artigos que possam lhe ajudar. Extraindo Texto de Arquivos PDF com Python Como ler PDF com Python - Computer Science Master Ler Tabelas em PDF com Python | Hashtag Treinamentos Existem diversas bibliotecas para realizar isso, sugiro testar com alguma dos artigos acima, na lógica tu só precisará transformar o arquivo em uma string no python ai realizar as buscas nestas strings. Para realizar as buscas nas strings da para usar o metódo string.find(texto) que irá retornar a posição onde inicia o texto procurado. Segue abaixo um exemplo de uma maneira de realizar a obtenção disso. texto = 'nome: thanael linguagem: python' # Obter a posição onde inicia meu nome. inicio = texto.find('nome:') + 6 # Nome: retorna posição 0 , agora basta pular os caracteres desejados "Nome: " = 6 caracteres # Agora basta obter a posição final, ou seja até onde desejo obter fim = texto.find('linguagem') # Basta usar o Slice agora ou seja obter o trecho que desejo nome = texto[inicio:fim] print(nome) Enfim esta é uma das varias formas que existem de realizar o processo que você deseja, espero que com estes exemplos e artigos você consiga realizar o que deseja. Além disso, também estou a disposição para lhe ajudar no que for necessário.
  2. Olá @ENSS tudo bem ? Olhando aqui a documentação https://instaloader.github.io/module/instaloader.html consegui encontrar alguns pontos que lhe ajudem. 1° Para realizar somente o download das imagens será necessário você ajustar alguns parâmetros ali em seu código adicionando o parâmetro save_metadata = False, isso fará com que não seja baixado os arquivos .json. Também será necessário ajustar o parâmetro post_metadata_txt_pattern de None para str() para não realizar o download dos arquivos .txt. Resumindo adicione esses dois parâmetros que coloquei abaixo no Instaloader ali do seu código save_metadata=False, post_metadata_txt_pattern=str(), 2° Agora para limitar o número de download, não consegui encontrar nada sobre isso na documentação.... Uma sugestão seria fazer outro processo para deixar na pasta somente o número de processos que deseja... Enfim espero que isso lhe ajude de alguma forma, caso contrário estou a disposição para lhe ajudar.
  3. Olá @Pietro Lopes Eugenio tudo bem? Vamos lá, o input("texto") faz com que você receba o que o usuário digitar, porém você irá receber isso como um dado do tipo texto (str). Portanto será necessário converte-los para dados do tipo INT segue um exemplo: x = int(input('Qual é a base: ')) y = int(input('Qual é a altura: ')) Segue abaixo um exemplo deste código funcionando. x = int(input('Qual é a base: ')) y = int(input('Qual é a altura: ')) area = x * y perimetro = x * 4 print(f'Perimetro: {perimetro} \nÁrea: {area}') Espero que tenha resolvido sua dúvida, caso contrario estou a disposição 👍
  4. Olá pessoal! sabiam que o PostgreSQL tem uma função muito útil chamada generate_series? Com ela, é possível gerar uma lista de valores em um intervalo especificado, ou seja, podemos criar intervalos de números e até mesmo datas. Parece difícil ? Veja como é simples a Sintaxe para utilizar o generate_series SELECT generate_series(inicio, fim, passo); Podemos usar isso para obtermos intervalos de número e até mesmo intervalo de datas, trazendo por dia, semana, mês ou o que preferirmos. Para criar um intervalo de datas usando o generate_series, basta seguir o exemplo abaixo: SELECT generate_series('2023-01-01'::date, '2023-02-01'::date, '1 day'::interval); Viu só como é simples utilizar o generate_series ? além disso esta é uma função muito útil que ajuda a aumentar o que você pode fazer em seus SELECTs 👍
  5. Olá @Umpaulistano tudo bem ? Vou lhe mostrar alguns exemplo de query para estas questões, mas vale salientar que como não conheço a base de dados pode ser que o resultado não seja o esperado, sugiro ajustar os nomes de colunas e tabelas para a sua base de dado. 1) Escreva uma query que retorne a receita por nome do cliente, ordenada da maior para a menor. SELECT cliente, SUM(receita) FROM tabela GROUP BY 1 ORDER BY 2 DESC 2) Escreva uma query que retorne a receita por Filial entre os dias 01/01/2022 e 03/01/2022. SELECT filial, SUM(receita) FROM tabela WHERE 1=1 AND dia >= date'2022-01-01' AND dia <= date'2022-03-01' GROUP BY 1 ORDER BY 2 DESC 3) Escreva uma query que retorne clientes que nunca efetuaram uma compra. SELECT cliente FROM tabela WHERE 1=1 receita ISNULL 4) Escreva uma query que retorne somente clientes que tiveram receita maior que 10.000 SELECT cliente FROM tabela WHERE 1=1 receita > 10000 5) Escreva uma query que retorne o primeiro pedido de cada um dos clientes. WITH dados as ( SELECT cliente, pedido, RANK() OVER (ORDER BY cliente) FROM tabela ) SELECT cliente, pedido FROM dados WHERE rank = 1 Estes são exemplos de como realizar estes SELECTs, porém ressalto novamente que funcionará dependendo da estrutura do banco de dados, portanto pode ser que não funcione... Caso queira uma exatidão maior na resposta peço que envie um print sobre a estrutura das tabelas, que ai conseguirei lhe auxiliar com mais precisão 👍
  6. Provável que assim como eu você já teve de criar gráficos em Python e utiliza-los em seus relatórios, para isso normalmente baixamos o PNG do nosso gráfico plotado com Python. O problema de exportar o gráfico em PNG é pelo fato dele perder a interatividade que as bibliotecas fornecem aos gráficos, principalmente o Plotly. Veremos também a diferença entre um gráfico sem estilização x gráfico estilizado com marcações nos valores. Mas como corrigir a perda de interatividade ao usar seus gráficos em formato de Imagem? Vou lhe mostrar uma maneira simples de resolver isso ao estilizar seus gráficos com Plotly. Para tornar mais simples de entender vamos utilizar o seguinte dataset simples, mostrando a distribuição do valor ao decorrer dos meses. Iremos primeiro mostrar uma simples plotagem de um gráfico de linha com estes dados. import pandas as pd import plotly.express as px import plotly.graph_objects as go fig = px.line(df, x='data', y='valor', markers=True) fig.show() Se você já conhece o Plotly, sabe que este é um gráfico interativo com ferramentas de visualização, mostrando os valores ao passar o mouse sobre eles. Porém se você precisar converter ele em imagem para adicionar em seus relatórios, ele perderá toda a interatividade... Para resolver isso vamos estilizar o gráfico e adicionar marcadores em seus valores. Tornando possivel visualizar seus valores através de uma imagem estática. Estilização e Marcação em gráficos com Plotly Segue abaixo um exemplo do código de forma explicada sobre a adição de rótulos e como realizar um estilização simples ao gráfico. fig = px.line(df, x='data', y='valor', markers=True) # Adicionar os Marcadores - Rótulos for index, row in df.iterrows(): fig.add_annotation( x=row['data'], y=row['valor'], xref="x", yref="y", text = f"<b> {row['valor']} </b> ", font = dict( family="Arial", size=13, ) ) # Estilizar o gráfico fig.update_layout( width=800, height=350, # Titulo title=dict( text=f'<b>Faturamento 2022</b>', x=0.5, y=0.95, font=dict( family="Arial", size=28, color='#000000' ) ), # Eixo X xaxis=dict( title="<b>Mês</b>", titlefont=dict( size=16 ), ticklen=9, tickmode='array', tickvals=df['data'] ), # Eixo Y yaxis=dict( title="<b>Valor</b>", titlefont=dict( size=18 ), ticklen=10, ), ) # Mostrar o gráfico fig.show() Veja como a estilização de um gráfico pode ser algo simples de realizar, basta escrever o código de forma comentada e simples de entender e você perceberá que a estilização de gráficos com Python não é um bicho de 7 cabeças.
  7. Olá @Alexander43 tudo bem? Poderia me passar a mensagem de erro ? não estou conseguindo entender o que esta escrito mesmo dando zoom na imagem...
  8. Pelo que parece o código não está encontrando a lib requests instalada ai... Sugiro verificar se a mesma está instalada, o código para instalar ela consistem em pip install requests basta rodar isso em seu terminal.
  9. Olá @Claudio Mello tudo bem? Em qual parte especifica do código esta gerando este erro ? Pela mensagem de erro podemos entender que está faltando você passar o parâmetro reader em alguma parte do seu código.... Sugiro você verificar a linha que esta gerando esse erro e pesquisar na documentação da biblioteca que estiver usando quais parâmetros devem ser usados. 👍
  10. Thanael

    Loop no Python

    Você também pode adicionar print( ) ao final de cada iteração para sinalizar a conclusão de cada iteração. print(f"O arquivo {file} foi concluido")
  11. Thanael

    Loop no Python

    Olá @vgcordeiro vou lhe explicar uma forma que lhe sirva totalmente. Vou lhe explicar a teoria primeiro e um exemplo de código na prática. Pensamos da seguinte forma, você necessita realizar esse processo N vezes ou seja para quantos arquivos você ter correto ? Portanto basta ao invés de fazermos um número fixo de LOOPs, obtermos a quantidade de arquivos e realizar a quantidade de Iterações referentes a quantidade de arquivos, vou lhe mostrar um exemplo. import os path = 'C:\\Users\\thanael.butewicz\\Documents\\bokeh' for file in os.listdir(path): print(file) Desta forma ele vai obter uma lista contendo o nome dos arquivos presente na pasta definido nessa variável criada. Acredito que assim seu código irá funcionar independente do número de arquivos que existir na pasta 👍 OBS: Lembre-se que no caminho é necessario passar o caminho todo, e usar \\ ao invés de \ caso contrario irá gerar um erro pois o \ é um caractere usado para formatar strings também. Enfim, testa ai e depois me diz se deu certo 😄
  12. Você já precisou obter a diferença entre duas datas, em segundos, horas, minutos ou até mesmo a quantidade dias entre duas datas ? Eu já precisei fazer isso diversas vezes, e em todas elas sofro para encontrar métodos práticos para resolver isso. Portanto para que você não tenha que passar por essa luta para encontrar como resolver isso, vou lhe mostrar uma forma muito simples de como realizar isso através do Python e da biblioteca Datetime que é uma mão na roda quando falamos de datas Então chega de enrolação e vamos colocar a mão na massa. import datetime # Vamos definir as duas datas agora = datetime.datetime.now() print(agora) # 2023-01-23 21:15:43.482235 data_aleatoria = datetime.datetime(2021,12,7,14,29,30,55) print(data_aleatoria) # 2021-12-07 14:29:30.000055 # Vamos subtrair estas datas normalmente delta = agora - data_aleatoria print(delta) # 412 days, 6:46:13.482180 # Agora basta obtermos a unidade de tempo que desejarmos print(delta.total_seconds()) # 35621173.48218 Segundos print(delta.total_seconds() / 60) # 593686.224703 Minutos print(delta.total_seconds() / 3600) # 9894.770411716667 Horas print(delta.days) # 412 Dias Simples assim! Realmente é muito simples, porém fácil de esquecer, portanto já salva este post em algum lugar, para sempre quando precisar lembrar como realizar isso.
  13. Olá @Julio Cezar Barreto tudo bem? Sugiro dar uma olhada na documentação do read_excel este método pode precisar utilizar alguns parâmetros... Vou deixar aqui abaixo alguns artigos que possam lhe ajudar. Comando para abrir arquivo excel no Pandas - Neste post o cara mostra um erro que acredito ser semelhante ao seu caso. LER ARQUIVO EM EXCEL COM VÁRIAS ABAS NO PYTHON – CASOS PRÁTICOS COMO LER E CRIAR ARQUIVOS DO EXCEL COM PANDAS Caso mesmo assim continue gerando erro, avisa aqui que procuramos outra forma de lhe ajudar. 👍
  14. Thanael

    Loop no Python

    Olá @vgcordeiro tudo bem ? Basta adicionar um FOR desta forma. for i in range(1,30): # adicionar seu codigo aqui. A grosso modo é isso, porém é bom se atentar se precisará que os valores alterem a cada iteração e tals.
  15. Thanael

    os.rename - Dúvida

    Olá @vgcordeiro tudo bem? Da uma olhada na documentação do os.rename, nele basta que passemos como parâmetros o nome do arquivo que desejamos renomear e o novo nome do arquivo. Portanto basta que usemos variaveis para isso. armazena o numero da nota fiscal numa variavel ai passa essa variavel para definir como nome. arquivo = 'teste.txt' nota = 'numero/nome da nota aqui' os.rename(arquivo, f"{nota}.pdf") Espero que isso lhe ajude, caso contrario estou a disposição
  16. Olá @Weime Dias acredito que basta você criar as funções para realizar a ação que irá funcionar normalmente caso sua assistente virtual seja um arquivo .py, caso seja uma aplicação web ou desktop ai aumenta a complexidade, sugiro pesquisar sobre envio e armazenamento de arquivos em servidor e disponibilização de arquivos na sua aplicação. Infelizmente não possuo conhecimento em como realizar essas etapas, mas acredito existir muito conteúdo na internet sobre isso. Espero que isso lhe de um norte de para onde seguir.
  17. Olá @kaique_910 tudo bem? Recomendo reinstalar ou rodar um upgrade nesta biblioteca especifica. pip install --upgrade seaborn caso mesmo assim persista este erro, procura pela versão mais estável desta biblioteca e realiza sua instalação. Espero que isso resolve seu problema, caso contrario estou a disposição para lhe ajudar.
  18. Thanael

    Novato

    Olá @ENSS tudo bem? Vamos lá para entender o que aconteceu. Poderia me explicar brevemente o objetivo desta parte aqui not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique()) O erro está acontecendo em qual linha exatamente... nesta acima ? Pelo que estou vendo ele não esta conseguindo encontrar aqueles valores ali como colunas... Verifica os nomes das colunas se esta como texto mesmo, recomendo analisar novamente esse processo, as vezes algo passou despercebido.... Infelizmente não consigo lhe dar uma resposta mais assertiva com as informações que estou vendo, talvez seja erro meu, mas se possível poderia explicar mais detalhadamente o que está tentando fazer no DataFrame que resultou neste erro, a partir dai acredito que conseguirei lhe ajudar de forma mais assertiva.
  19. Olá @wesleyss29 tudo bem? Vish, nunca realizei isso via python. Vou mandar uns artigos aqui que talvez possa lhe ajudar. Automatize o seu Backup do PostgreSQL via Python! How to take backup of MySQL database using Python? Caso a ideia seja só copiar os dados de um banco sem levar em conta a criação das constraints e tudo mais, daria para fazer em um script python simples com pandas, algo como import pandas as pd # obter os dados tabela = pd.read_sql('select * from tabela_teste', conexao_homologacao) # inserir no outro banco tabela.to_sql('tabela_teste', conexao_producao, if_exists = 'append', index = False) Espero que isso possa lhe ajudar, caso contrario fico a disposição para procurar outras formas de lhe ajudar.
  20. Olá @pmourao segue abaixo duas maneiras de realizar isso Primeiro vamos criar o dicionario. favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', 'paulo': 'java', 'marcel': 'java', 'herminia': 'c#', 'sara': 'ruby', 'carlos': '', 'jose': '', } Maneira mais simples para entender nao_responderam = [] for nome, linguagem in favorite_languages.items(): if linguagem == '': nao_responderam.append(nome) print(f'{nome} não respondeu a pesquisa') Desta forma ele irá printar quem não respondeu e também irá adicionar seus nomes a lista nao_responderam. Maneira mais rápida. (mais complexa de entender) nao_responderam = [nome for nome, linguagem in favorite_languages.items() if linguagem == ''] print(nao_responderam) Desta forma você também terá uma lista com o nome das pessoas que não responderam Enfim espero que seja isso que necessite. Qualquer dúvida estou a disposição. 👍
  21. Olá @Claudio Villar tudo bem? Então o \n é usado para indicar que ele deve pular a linha quando você printar o texto. Na teoria ele deveria ter pulado a linha, acredito que para resolver isso tu deverá pesquisar algo sobre essa quebra de linha com a API do WhatsApp. Pesquisei brevemente sobre isso encontrei algo como: "Sim, você deverá usar \n para quebrar o texto. Porém, a sanitização vai retirar o \n e o ?, o que vai criar um resultado não esperado." "Para resolver o problema, basta você converter o texto para URL Encode. No javascript, por exemplo, ficará assim:" Vou lhe mandar o site no qual encontrei isto, espero que lhe ajude. 👍 API do Whatsapp – Como quebrar linhas e passar parâmetros em links
  22. Olá @Luis Antonio tudo bem? Da uma pesquisada no método pd.read_excel do pandas, sempre que preciso ler dados de uma planilha, eu uso ele para trazer todos os dados da planilha, ai a partir disso eu trabalho com esses dados no Python. Segue abaixo alguns links que possam lhe ajudar. read_excel (documentação oficial) LER ARQUIVO EM EXCEL COM VÁRIAS ABAS NO PYTHON – CASOS PRÁTICOS Abrindo arquivos Excel em Python: explorando a performance de diferentes algoritmos Espero que isso lhe ajude, se mesmo assim não conseguir avisa aqui para que possamos pensar em outra solução. 👍
  23. Já pensou em obter a conversão de moedas em tempo real através do Python ? E o mais importante de forma simples e prática? Sem precisar de nenhum conhecimento avançado. Ao decorrer deste tópico vou lhe mostrar como realizar isso agora mesmo. Portanto pega seu caderno e já começa a anotar ✍️ Para realizar essa função iremos utilizar uma API Free disponível na web chamada de AwesomeAPI, "mas Thanael você falou que não precisava de nenhum conhecimento avançado e agora vem falando de API já".🤚 Calma, API não é um bicho de 7 cabeças. Além disso não iremos desenvolver uma API do zero, iremos somente utilizar uma API já pronta. Para facilitar sua compreensão sobre consumo de APIs, vamos pensar em API como funções prontas que alguém já desenvolveu, portanto só precisamos descobrir como usa-las semelhante a uma biblioteca qualquer do python, a diferença e que não precisamos baixar nada pois elas já estão disponíveis na web. Sendo assim vamos agora colocar a mão na massa! import requests # Biblioteca para trabalhar com requisições import json # Biblioteca para transformar a resposta da requisição em um dicionario Python def cotacao(moeda): url_api = f'https://economia.awesomeapi.com.br/last/{moeda}' # URL da API passando o parâmetro req = requests.get(url_api) # Realizar o Request return json.loads(req.content) # Transformar em dicionario cotacao('USD-BRL') FIM! Exatamente, é somente isso de código, muito simples e prático. Pois assim como falei nós só estamos usando uma solução já disponível na web (API), portanto é bem mais simples do que desenvolver de fato a API. Perceba no código que na linha da variável url_api é onde chamamos a API, ou seja enviamos para a API um parâmetro no caso a moeda que desejamos e ela irá nos retornar o resultado já pronto. Simples assim! Veja o resultado! OBS: E mesmo se tu acabar passando os parâmetros errados por exemplo 'UCSA-BRL' (UCSA não existe), a própria API vai lhe retornar uma mensagem dizendo que a moeda digitada não foi encontrada. Muito simples este processo não acha, ai com os dados já em mãos basta realizar o que quiser com eles. Uma dica muito importe é sempre ler a documentação da API, neste caso especifico acesse a AwesomeAPI/-api-de-moedas nesta documentação você encontra as moedas que a API fornece conversão, mensagens de erros, legenda dos campos, passo a passo de como usa-la, entre muitas outras informações. Espero que esse tópico consiga lhe ajudar no seu aprendizado em Python e tire um pouco do medo que a palavra API gera nas pessoas hahaha 😱, ao decorrer do tempo você percebe que usar APIs é mais simples do que pensa. 😄 👍
  24. Olá @lucasandrade tudo bem? Uma maneira simples de lidar com esses casos onde existem letras maiúsculas e minúsculas e transformar tudo em uma coisa só, exemplo transformar tudo em letras minúsculas usando o string.lower( ). Segue abaixo um exemplo de como realizar isso. lista_usuario=['Gabriel','Rafael','Juca','Toreto','Brian','Nick','Lucas'] novo_usuario=['lucas','Cesar','Rodrigo','Toreto','Robson','Alberto','Tiao'] lista_usuario = [usuario.lower() for usuario in lista_usuario] print(lista_usuario) # ['gabriel', 'rafael', 'juca', 'toreto', 'brian', 'nick', 'lucas'] novo_usuario = [usuario.lower() for usuario in novo_usuario] print(novo_usuario) # ['lucas', 'cesar', 'rodrigo', 'toreto', 'robson', 'alberto', 'tiao'] Deste modo basta agora realizar a verificação normal igual você já fez for usuario in novo_usuario: if usuario in lista_usuario: print(f"\nNome de usuario {usuario.title()} ja existe! \n ") else: print("Seja bem vindo " + usuario.title() + ".") Exemplo de sáida. Obs: Adicionei o .title( ) que serve para transformar a 1° letra da string em maiúscula, achei melhor já que se trata de nomes haha 😅 Enfim espero que seja isso que você precise, caso contrario estou a disposição para lhe ajudar no que precisar 👍
×
×
  • Create New...