Transcrições
1. Por que as expressões regulares?: Olá e seja bem-vindo
à masterclass completa de
expressões regulares
Python. Esta aula é totalmente atualizada e interativa com aprendizado
prático para ajudar a guiá-lo de 0 para herói e aprender Python RegEx. Por que expressões regulares? Python é uma das
linguagens
de programação
mais populares e de crescimento mais rápido do mundo, e é projetado para crescer
ainda mais no futuro. Então, se você está construindo
sua carreira como programador ou
cientista de dados e quer
se diferenciar do
resto da multidão aprendendo apenas uma habilidade técnica ou a expressão
regular de Scalar . Então, o que você pode fazer com expressões
regulares? Você pode automatizar tarefas que serão realizadas em questão de segundos. Você pode fazer
tarefas avançadas de correspondência de
botões usando o
incrível poder do Python, você pode ler, saltar e reescrever
dados de acordo com suas próprias necessidades. E a melhor coisa sobre
isso é que é tão fácil e direto dentro de
algumas linhas de código, você poderá
fazer tarefas que levariam horas para serem feitas manualmente. E agora vamos executar nosso programa
e ver como ele se parece. Isso parece muito mais legível e muito
mais fácil de trabalhar. Vamos abrir o primeiro arquivo ao lado dele e
combiná-los juntos. A diferença é dia e noite. Fizemos isso. E quais 15 linhas de
código menos o espaçamento. Isso levaria muito
tempo para classificá-lo manualmente. E há também a
possibilidade de erro humano, que pode executar
todo o banco de dados para nós. Em vez disso, com poucas linhas de código, deixamos a máquina fazer o trabalho e eliminar a
possibilidade de perder um valor de dois e criar um efeito de bola de neve
que executa nossos dados. Então, para quem é esse curso? Iniciantes que
nunca programaram
programadores provenientes de
diferentes idiomas. Os programadores não são Python básico, mas querem elevar
suas habilidades. Então, como são os custos reais? Vamos dar uma olhada primeiro. Vou lhe dar uma breve
introdução sobre como usar o medicamento X em
seu programa Python. Em seguida, escreveremos
nosso primeiro padrão para verificar o
e-mail do usuário usando RegEx. Em seguida, vamos dar uma olhada em diferentes
métodos de pesquisa e combinar objetos e mostrar como eles
funcionam resolvendo problemas. Em seguida, aprenderemos como
extrair dados úteis e
usaremos uma ferramenta que tornaria os padrões de
correias
muito, muito mais fáceis. Finalmente, teremos
um exercício do mundo real onde teremos um
arquivo solicitado a ler nele, classificar valores em
uma ordem específica depois escrever a nova
lista classificada e um arquivo diferente. Vamos passar por tudo isso e muito mais em tempo hábil. Esta classe deve ser curta, concisa e direta
ao ponto. Você poderia perder menos
tempo em teoria e mais tempo com experiência
prática. Então, o que você está esperando? É hora de você levar suas habilidades de programação
para o próximo nível, inscrever hoje e
te vejo dentro do curso.
2. Introdução - Verifique o e-mail dos usuários usando o Regex: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma
olhada em expressões regulares. Expressões regulares
ou regex podem ser usadas para verificar se uma string contém
um padrão especificado. É uma ferramenta poderosa para
encontrar padrões em um texto. Então, vamos dar uma olhada. Então,
digamos, por exemplo, que queremos verificar o
e-mail do usuário usando RegEx. A primeira coisa que temos que
fazer para começar a usar o RegEx é importar
o módulo RE. Agora suponha que este seja o
endereço de e-mail que queremos verificar. Agora vamos criar
um botão e definir as regras para esse
botão que queremos verificar. Agora temos que dividir
o endereço de e-mail em quatro partes para ter um melhor entendimento
para a primeira parte, que está recebendo
snap ou ID de usuário, ele pode conter um a
Z e 0 a nove. No começo,
usamos a cenoura ou o símbolo circunflexo
para inicializar isso. Queremos combinar uma string que começa com o seguinte. E para acabar com esse padrão, usaremos o símbolo do dólar. Mas é claro que queremos adicionar mais cadeias de armazenamento de condições. Você não vai
acabar com isso agora, a segunda coisa que digitamos
isso de a a Z e 0 a nove. Isso significa que essa
parte da string pode conter qualquer
letra em qualquer número. Agora vamos digitar um
símbolo de mais indicando que isso pode ocorrer uma
ou mais vezes. O nome do destinatário
também pode incluir símbolos
como ponto, sublinhado e traço. Sublinhado e traço do período. Usamos a barra invertida para definir
nossos caracteres especiais, ponto, sublinhado e traço. Usamos o ponto de interrogação aqui porque esses símbolos
podem ser usados
0 ou um no máximo se
ocorrerem duas vezes, que significa que é
um e-mail inválido. É por isso que tivemos
que especificar isso com um símbolo de ponto de
interrogação. Agora, depois desses símbolos, você também pode ter quaisquer caracteres de a
a Z e 0 a nove. Após os símbolos que
especificamos, o período sublinhado e traço, podemos ter letras de a a Z ou números de 0 a nove. Assim mesmo.
Mais uma vez, usaremos o símbolo de mais porque eles
podem ocorrer mais de uma vez. Agora temos que escrever o
símbolo de adição, que ocorre aqui. Então, após o símbolo de adição, teremos coisas como At Hotmail ou Gmail e
assim por diante e assim por diante. Portanto, pode ser qualquer caractere
alfanumérico. Então, após o anúncio Hotmail,
chega o período. Então, temos que especificar isso. Agora, após o período, vem
coisas como.com.net. Geralmente eles têm comprimento entre
dois a três caracteres. Então, temos que especificar isso. Agora usaremos o
símbolo do dólar para acabar com nossa string. Agora que nosso padrão foi feito, queremos receber
informações do usuário solicitando que ele
insira seu e-mail. Agora vamos criar um loop F para verificar o botão
que eles nos usariam? E, portanto, o método re.search
terá dois argumentos. O primeiro é
o botão que criamos. A segunda é a entrada do usuário ou a
string que queremos verificar. Então, vamos executar nosso programa
e ver como ele se parece. Então, vamos digitar esse
mesmo endereço de e-mail. Então eu acredito que o erro que
cometi foi deixar um espaço aqui. E quando eu removo o
espaço, ele funciona muito bem. Um mapa fonético de alto tipo
em vez de genético. Então, vamos ver se inserimos um e-mail inválido de
propósito, como genérico. E então usei outro e-mail
simples e válido. Bem, pelo que parece, nosso programa funciona muito bem. Então, vamos dar uma
olhada em outro exemplo. Digamos que queremos procurar um determinado botão
na seguinte string. Então, parece que a maiúscula
foi repetida duas vezes. E queremos verificar esse
padrão em nosso distinto. Para fazer isso primeiro,
definiremos nosso botão. Aqui. Usaremos
o método de compilação. Também poderíamos usar
o método de pesquisa como fizemos no exemplo
anterior. Então R aqui antes da nossa
string significa string raw, python, string raw trata barra invertida como um caractere
literal. Isso é útil quando temos
uma string que contém barra invertida n. Não quero que ela seja tratada como um caractere de escape. Então, vamos ver a
diferença entre cordas regulares
e cordas brutas. Então, o primeiro, que é uma string regular, tratou a barra invertida n
como um caractere de escape. Nesse caso, ele
é usado para iniciar uma nova linha. E, como você pode vê-lo, no entanto, na segunda string, que é uma string bruta, ela ignorou os usuários de
barra invertida e a
tratou como um caractere literal. Da mesma forma, se substituímos a
barra invertida n por barra invertida x, teremos uma seta
e a string regular porque a barra invertida x
não tem um propósito. No entanto, nossa corda bruta, ignoraremos isso e
imprimiremos assim como está. Então, vamos voltar à
nossa string de teste. Agora vamos criar um objeto. Então,
digitamos o botão que usaremos. Agora usaremos o método find. Dentro do método ETL definido, vamos digitar nossos testes encolher. Agora criamos
um objeto chamado correspondências que podemos
iterar usando fluxo suficiente. Como você pode ver, ele
mostra duas ocorrências de um tempo mostrando
sua posição. Além disso, é sensível a maiúsculas de minúsculas, o que
significa que não
captou a minúscula a. Também
podemos tornar nosso código
mais curto usando r e, encontrar Eta imediatamente. Por exemplo. Agora vamos digitar o botão que
queremos procurar, que é a0. E então o segundo argumento
passaremos a string que
queremos testar. Como você pode ver, ele retorna os mesmos resultados com
menos linhas de código. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
3. Métodos para procurar jogos: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma olhada nos métodos para procurar correspondências. Então, no último vídeo,
trabalhamos neste exemplo, que usou achar melhor. Existem outros métodos
para procurar correspondências, como corresponder,
pesquisar e encontrar todas. Então encontre-o para retornar
um objeto com a posição da string
que estávamos procurando. Localizar tudo no entanto, retorna apenas
uma string, por exemplo. Então é isso que encontrar todos. O que há sobre o método de correspondência. O método de correspondência procura o
botão apenas no início
da string e retorna apenas a primeira
ocorrência, por exemplo. Então, como você pode ver, ele não retornou a segunda
ocorrência de a. Agora vamos mudar o botão. Queremos procurá-lo por
algo diferente de um, por
exemplo, como você pode
ver, não retorna nenhum. Então, mesmo que cinco nonos oito tenham ocorrido
em nossa corda, mas porque não estava no
início, não é devolver nenhum. Então, e quanto à pesquisa? A pesquisa funciona muito
semelhante para achar melhor. No entanto, retorna apenas a primeira ocorrência
do padrão, por exemplo. Portanto, os quatro métodos de correspondência mais
comuns, ou encontre uma busca melhor, encontre tudo e combine. Então, vamos dar uma
olhada neste exemplo. Temos a seguinte string
que diz $3 para a camisa, não
usaríamos RegEx para verificar se a corda começa
com um dígito. Nesse caso, são três. E se for esse o caso,
imprimiremos esse dígito. Então, primeiro vamos importar RE. E então
criaremos uma string e colocaremos esse texto dentro dela. Agora queremos criar um botão
que queremos procurar. E vamos
usar cordas cruas. Como de costume, vamos digitar
a
barra invertida do botão t. barra invertida
d significa um dígito, que é
exatamente o que temos aqui. Então, agora que criamos um botão, vamos criar um objeto de correspondência. Aqui
passaríamos nosso botão, então passaremos em nossa corda. Agora podemos simplesmente dizer F, o que significa que se S for verdadeiro, então imprime o seguinte. Você pode perguntar, a cotação
corresponde ao grupo de pontos, grupo é um método
do objeto de correspondência. E o que ele simplesmente
faz é que ele retorna a string correspondente, que neste caso é três. Vamos dar uma olhada mais nos métodos
Match no próximo vídeo. Mas, por enquanto, o grupo retornará
o número três para nós. Então, vamos executar nosso programa
e ver como ele se parece. Então, mesmo que mudemos
esse número para cinco, ele retornará cinco. Então, se não usarmos
o método de grupo, isso é o que vamos conseguir. Você vai pegar o objeto de correspondência
completa. Só queríamos a corda cinco. É por isso que usamos o método de grupo de
pontos. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
4. Métodos para Objetos de Correspondência: Olá e bem-vindo de
volta ao meu vídeo. Então, no último vídeo,
vimos como se encontra com o retorno um objeto
que poderíamos iterar usando loop suficiente. Portanto, esse objeto em si corresponde tem seus próprios métodos e vamos
dar uma olhada neles. Esses são os métodos
começam, crescem e se estendem. Então, como você pode ver quando
imprimimos o resultado, ele retorna esse objeto. Só podemos imprimir a extensão
aqui usando o span para isso, vamos usar a extensão de pontos de
correspondência. Agora, quando
executarmos nosso programa, teremos uma tupla
contendo nossa extensão que isso pode ser útil se
quisermos imprimir exatamente onde nosso
padrão ocorreu. Por exemplo, como você pode ver, isso parece mais
legível para o usuário. Se imprimirmos o tipo
desse método de extensão de pontos de correspondência, descobriremos que
é apenas uma tabela que inclui a posição, qual nossa correspondência ocorreu. Também podemos imprimir a posição
inicial e final da nossa string usando o
início e o fim. Então, vamos dar uma olhada. Combine, então, vírgula. Então, para retornar os números inteiros da nossa posição inicial e
final, poderíamos fazer algo assim. E quando imprimirmos seu tipo, descobriremos que
é apenas um número inteiro. Finalmente, se quisermos imprimir
apenas a string que corresponderá,
usaremos um grupo. E, como esperado, quando
imprimimos seu tipo, passamos a saber
que é uma string. Então, em conclusão, corresponde a
um objeto que contém a extensão em que o padrão de
barra de correspondência ocorreu. E também contém a
string que foi correspondida. Podemos acessar
componentes individuais
dessa correspondência usando os
métodos que passamos pelo método start
para obter um inteiro aquela posição inicial na
qual o padrão começou. Método para obter um número inteiro, a posição final na
qual o botão terminou. Método de grupo para obter
a string correspondente. E, finalmente, o método
span para obter uma tabela que inclui a
posição inicial e final do botão. Então é isso para o básico. E no próximo vídeo,
veremos como podemos extrair dados
úteis usando o X vermelho para fins de ciência de
dados ou
documentação. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
5. Extraindo Dados Úteis: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos
aprender a extrair dados úteis e elevar nossas habilidades de
expressão regular a um nível totalmente novo. Neste vídeo,
usaremos uma ferramenta ou
um site chamado
beg x, one-on-one. É uma
ferramenta muito poderosa que
não só nos ensinará mais sobre RegEx, mas também simplificará o processo
e visualizará o seguinte. Primeiro, clicaremos no bifan como nossa linguagem de programação com
a qual estamos trabalhando. Agora suponha que temos
a seguinte string. Então, dando uma olhada na string, temos dois números. Um é um número de telefone
e o outro é um número
de dois dígitos da empresa vende logo de cara. O que sabemos sobre números de telefone é que eles
consistem em dez dígitos, modo que o diferencia
facilmente do outro
número aqui. Assim, podemos configurar nosso
RegEx para extrair sempre que encontrar um número de sequência de dez
dígitos. Então, quando passamos para
a guia de referência rápida, podemos encontrar a sintaxe que
precisamos caso a esquecamos. Então aqui diz barra invertida
d significa qualquer dígito, ou em outras palavras, qualquer número. Então, vamos seguir em frente e usar isso. Como você pode ver quando, quando
digitamos barra invertida d, Essas são as correspondências que recebemos. Basicamente, correspondia a
todos os dígitos que temos. Agora, o que queremos combinar dois dígitos consecutivos,
podemos vincular a dias de barra invertida. Agora ele corresponde a dois dígitos. Então, antes de termos 12
partidas, agora temos seis. Como ele não corresponde a
cada dígito individual
agora ele só corresponde a dois
dígitos juntos como um. E se digitarmos três
barras invertidas, só teremos duas partidas de três dígitos consecutivos. E como você pode ver,
20 milhões não correspondem porque é
um número de dois dígitos, e assim por diante e assim por diante. Então, pode-se pensar quando Izzy, se um número
de telefone com dez dígitos, poderíamos ficar dez barra invertida esses dois
corresponder a essa sequência. Tecnicamente, eles não estão
errados e isso
funcionaria muito bem, por exemplo. Então, temos 345678910. Então, quando olhamos para as partidas, isso é o que vamos conseguir. Obviamente, há
maneiras mais sofisticadas de fazer isso. Por exemplo, você pode ir
para a guia de referência rápida. Tokens comuns encontrarão uma expressão que diz
exatamente três de um, ou seja, exatamente
três ocorrências da letra consecutivamente. Então, vamos tentar
usá-lo a nosso favor. Então, logo de cara, não
precisamos de um, queremos barra invertida d em vez disso. Então, digitamos barra invertida d e , em seguida, entre dois colchetes encaracolados entrará dez em vez de três. Agora, isso nos deu os mesmos resultados exatos
com muito menos codificação. Claro, alguns podem
dizer: Bem, números de telefone, ele será apresentado em formato
diferente, por exemplo. Então, se quisermos extrair
ou números de telefone e eles estão claramente em dois formatos
diferentes. Poderíamos fazer o seguinte. Primeiro, vamos salvar nossa expressão aqui e
voltaremos a ela mais tarde. Então, um dos bastões,
nosso botão que
queremos combinar começa
com um colchete. No entanto, se digitarmos
o pacote até uma expressão regular, teríamos um problema. E isso ocorre porque
o suporte é um personagem especial e tem
um significado para o nosso programa. Como você pode ver quando olhamos para a
etapa de referência rápida, descobrimos que o suporte é usado para capturar tudo
em colchete fechado, neste caso é chamado
de caractere especial. Então, para usar um personagem especial,
temos que escapar dele. E como escapamos dele? Simplesmente digitamos uma
barra invertida antes dela. Por exemplo. Agora, como você pode ver, isso funciona bem e
detectou nosso bolso aqui. Então, vamos continuar. Então, temos três dígitos após
o suporte, vamos morrer. Mas no nosso botão, três dígitos. E, como você pode ver, ele
detectou o número. Então, até agora tão bom. E novamente temos um suporte, mas podemos digitar os
suportes imediatamente. Temos que escapar
dele usando barra invertida. Agora temos um símbolo de traço. Então temos três dígitos, e depois um traço simples
e, finalmente, quatro dígitos. Agora, como você pode ver, ele está combinando com nosso formato de número de
telefone. Então acabamos com
essa expressão, mas ainda temos
nossa primeira expressão que é barra invertida d dez. Como dizemos ao nosso
programa para procurar este botão ou esse
padrão simplesmente, poderíamos usar o símbolo da barra
vertical. Então, quando digitamos
a pesquisa aqui, ou obtemos essa correspondência alternativa, a ou B. Então, vamos usar o simples. Em seguida, vamos colar nossa
expressão aqui. E, como você pode ver,
detectou os dois. Então, diz que procure
esse padrão ou esse botão. Então, se quisermos usar isso
em nosso programa Python, poderíamos fazer o seguinte. Então, primeiro importamos
nosso medicamento X. Em seguida, fazemos uma string
para conter nosso texto. Agora criamos um bastão. E chamamos o melhor
o botão que criamos. Agora vamos usar encontrar todos
vão primeiro digitar nosso padrão. Em seguida, o texto que queremos corresponder. Agora simplesmente imprimimos a correspondência. Vejamos os resultados. Como você pode ver,
funciona muito bem. Portanto, sempre podemos usar
RegEx one-on-one para criar nossa expressão e
testá-la antes aplicá-la
aqui no Python, isso torna as coisas muito mais fáceis
porque
visualiza o processo para nós e nos mostra o que está sendo igualado
em tempo real. Então, agora, para o nível dois, temos esse bloco de texto gigante e queremos extrair
os títulos dele. Portanto, os títulos aqui são nosso
propósito e nossa oportunidade. E queremos extrair a dose. Então, para começar, podemos digitar nota porque eles
começam com nada. E depois há um
espaço, depois um número. Agora capturamos a nota um e n2, mas ainda queremos capturar o texto que vem depois dele. Se você olhar de perto, verá que
o título termina com uma nova linha sendo
criada aqui e aqui. E sabemos que uma nova linha
significa barra invertida em Python. Queremos capturar todos os textos até encontrarmos uma nova linha. A questão permanece: como
digitamos isso em expressão regular? Então, se olharmos aqui para
a parada rápida de referência, ela diz qualquer caractere,
exceto a, B ou C. Então, vamos abrir um novo doc x
começar a experimentar. Então, digamos que temos o
seguinte texto e queremos dizer que corresponda a todos os caracteres, exceto o sinal de porcentagem,
o sinal de igual. Então, vamos digitar o seguinte. Como você pode ver, ele combinava com tudo, exceto aquelas amostras. E para fazer uma sequência, adicionamos um sinal de mais no
final da nossa expressão. Agora diz um ou
mais personagens até você encontrar
um desses sinais. Então, isso é o que o
sinal de mais significa. Uma ou mais ocorrências de um, qualquer caractere que você especificar. Agora, voltando aos nossos textos, vamos aplicar o que aprendemos. Ok, então agora temos um número, então temos um espaço. Então, adicionaremos um espaço. Então vamos tentar
essa expressão. Qualquer coisa, exceto uma nova linha. Ele só combina com o primeiro
personagem e pára. Em vez disso, queríamos capturar
um ou mais personagens. Para isso,
usaremos o sinal de mais. E quando vamos para o tipo de referência
rápida
e tipo de um ou mais, podemos usar o sinal de mais para ele. Também poderíamos usar o signo estelar, o que significa 0 ou
mais ocorrências. E isso nos daria
os mesmos resultados. Agora, quando vamos para as informações da
partida, podemos ver que elas funcionam, mas ainda não
terminamos porque queremos capturar
os títulos e nem um e o nó dois
não fazem parte de nossos títulos. Para isso, usaremos colchetes. Como você pode ver, diz
capturar tudo incluído. Então, quando vamos para nossa expressão, esta é exatamente a expressão que começou a
capturar o título aqui. Então, vamos colocar colchetes
em torno dessa expressão. Agora, o que ele faz é que, grupos são capturados
esses resultados para nós. Agora, o que acontece
é que ele corresponde outros resultados, como o
nó um e o nó dois. Então, vamos usar isso
em nosso código Python. E para copiar colar esse bloco
gigante de texto, usaremos três aspas
simples para
explicar a barra invertida n
ou novas linhas em nosso texto. Então, em vez desse método antigo, usaremos
três aspas, 123, então vamos
basear nosso texto
e, em seguida, usaremos outras
três aspas. Agora vamos copiar nossa expressão
regular que escrevemos e a
baseamos no padrão. Como você pode ver quando
executamos o programa, ele só retorna o título é para nós sem nenhum, nem dois. E agora, para o nível três, temos um bloco de texto relativamente
pequeno. No entanto, vamos extrair
muitas informações disso. Então, se dermos uma olhada nas informações
úteis aqui, podemos ver que
os ganhos foram fornecidos no
seguinte formato. ano fiscal FY então seguido
pelo ano, neste caso, é 2021 ou 2020, e depois um espaço e depois
o tribunal naquele ano. Nesse caso, isso é
Q1 e isso é q4. Então, sabemos que em um ano só
pode haver quatro trimestres, Q1, Q2, Q3 e Q4. Não pode haver um Q5. Então, vamos ter isso em mente. Então, logo de cara, nosso padrão começa com
o FY. Então, vamos digitar FY. Então, obviamente,
há quatro dígitos, que neste caso
é o ano. E como fazemos isso? Usamos barra invertida d. E, em seguida, entre os
colchetes encaracolados, digitamos quatro. Portanto, essa expressão significa f y seguida de quatro dígitos
ou números de telefone. Até agora tão bom. E depois há um espaço depois, antes do Q1 e Q4. Temos que especificar isso em
nossa expressão regular. Então, vamos digitar um espaço. Depois, há uma fila. Então, agora a fila é
seguida por um dígito. No entanto, não podemos
simplesmente digitar slash d porque isso incluiria coisas como as quais,
neste caso, estão erradas. Então, queremos garantir que
nossos dígitos sejam de um a quatro. Como fazemos isso? Se olharmos para a guia de referência
rápida, há essa opção que diz
um único caractere de a, B ou C. Você pode
especificar explicitamente os números que
deseja incluir, que é 1234. Mas há uma abordagem melhor. Poderíamos usar essa opção
no carimbo de referência rápida que diz um caractere
no intervalo de a Z. Agora poderíamos digitar de
um a quatro, e isso nos daria os mesmos
resultados com menos codificação. Então, agora vamos testar nosso
padrão e Python, nós me chamamos de eu adoro texto e o
baseamos neste texto de nome. E então copiamos nosso padrão e o
baseamos no padrão,
nosso programa Python. E agora vamos executar o
programa para ver os resultados. Então, e se um dos
voos fosse minúsculo,
mas ainda quisermos igualar isso de qualquer maneira, poderíamos fazer o seguinte. Lags é igual a ignorar o estojo. Agora, quando imprimimos os resultados, como você pode ver, eles
correspondem às minúsculas f, y. E digamos que não
queremos incluir o FY, que significa ano fiscal,
Simplesmente, poderíamos
usar os colchetes para capturar e reter apenas
as peças que queremos. Então, por exemplo, agora, quando
executamos nosso programa, podemos vê-lo, ele só
capturou as peças com especificadas dentro
dos colchetes. Então, vamos voltar para
RegEx um-a-um. Poderemos igualar o
ano e seus trimestres. No entanto, ainda queremos
igualar os ganhos
desse conjunto aqui. E suponha que tivéssemos
outros números e nossos textos que
queremos evitar, por exemplo. Então, vamos salvar nossa
expressão aqui. Não queremos
capturar esse número. Só queremos
capturar os números que começam com um cifrão. No entanto, não podemos simplesmente digitar o cifrão, pois é
um personagem especial. Isso significa o fim de uma string, como você pode ver na guia de
referência rápida na parte inferior. Então, como é um personagem
especial, sabemos que temos que
usar a barra invertida para escapar desse
caractere especial antes de usá-lo. Agora é compatível com o que queremos. Agora temos um dígito depois disso,
para que possamos digitar
barra invertida d. No entanto, há um
ponto decimal depois disso,
então, em vez disso,
usaremos colchetes. Então temos um ponto decimal porque é um personagem
especial, como você pode ver na parada de referência
rápida. Temos que usar a
barra invertida antes de usá-la. Agora fechamos nosso suporte quadrado. Agora precisamos colocar um plus, o que significa uma ou
mais ocorrências. Agora, se por algum motivo os ganhos da empresa
se tornaram 10,4 bilhões, ele ainda conta até
dois dígitos antes do ponto decimal porque
especificamos isso usando
o sinal de mais. Agora vamos colar essa expressão
regular e nosso programa Python
e ver se ela funciona. Agora vamos pegar o botão. Vamos remover isso. Agora vamos executar nosso programa. E, claro, se não
quisermos o cifrão, sempre
poderíamos usar os colchetes
para capturar o que queremos. Digamos que queremos igualar
o ano, o trimestre e
os ganhos disso aqui. Como fazemos isso usando o Drug X? Bem, já fizemos uma expressão regular para corresponder
ao ano e ao trimestre. Então, vamos usar isso primeiro. Agora, após o trimestre chegar, qualquer personagem antes de
chegarmos ao cifrão. Então, vamos digitar qualquer caractere
, exceto o cifrão. E agora precisamos
adicionar um sinal de mais para capturar uma ou mais ocorrências. Agora ele correspondeu a qualquer coisa
até que seja contrariado,
um cifrão. Então é isso que queremos. Agora vamos voltar à expressão
regular que criamos anteriormente para corresponder ao Anexo e colá-lo em
nossa expressão. Agora, como você pode ver,
combina exatamente com o que queremos. Mas pode-se dizer, bem, não
queremos necessariamente que os textos
entre o que diz era,
e foi simplesmente que você pode usar os colchetes para capturar
exatamente o que queremos. Agora, ele só captura
esses resultados. Então, vamos voltar aos nossos
programas Python como ele se parece. Como você pode ver, está
funcionando como pretendido. E, claro, se você não
incluir o cifrão, poderíamos apenas incluí-lo dentro da
nossa expressão capturada. Veja o tipo, por exemplo, os ganhos apresentados em bilhões. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.
6. Ordenar Arquivo de Dados Não Ordenados: Olá e seja bem-vindo de
volta ao meu vídeo. Hoje vamos dar uma
olhada em como podemos classificar um
arquivo de texto não classificado usando RegEx. Então este é o arquivo que
vamos dar uma olhada. O nome do arquivo é lista de dados. Eu o tenho salvo na minha área de trabalho. Então, quando abrimos o arquivo, temos três
tipos diferentes de dados, nome, e-mail e
números de telefone nesta lista. O FirstName aqui pertence
ao primeiro e-mail aqui e pertence ao
primeiro número aqui. Da mesma forma, o segundo
nome pertence ao segundo e-mail e
ao segundo número, e assim por diante. Agora o problema é que eles não estão listados um ao lado do outro ferimento. Eu tenho esses valores um
ao lado do outro, um por um. Obviamente, se você fizer
isso manualmente e colocar o primeiro nome ao lado do primeiro e-mail no primeiro número, isso levaria você para sempre. Então, como estruturamos essa
lista usando poucas linhas de código? Então, vamos ao
nosso programa Python e dar uma olhada para
começar a usar o RegEx. A primeira coisa que queremos
fazer é importar nossa matriz. Então, queremos abrir esse arquivo. Se você quiser uma explicação mais
detalhada de como lidar com
arquivos no Python, você pode verificar minha
classe sobre Manipulação de arquivos. Então é assim que abrimos
um arquivo em Python. É assim que você
abriria um arquivo se ele fosse salvo no
mesmo diretório do arquivo Python. No entanto, nosso arquivo é
salvo em nossa área de trabalho. Temos que especificar
a localização em nosso programa para saber a
localização do nosso arquivo de texto, vamos apenas para o
local onde ele está localizado e, em
seguida, clique com o botão direito do mouse em Propriedades. E aqui está o local, basta copiar colá-lo
em nosso programa Python. Agora temos que mudar
essas barras invertidas, duas barras para frente. Como você pode ver agora,
não está mostrando adultos. Agora estamos lendo
esse arquivo e salvando seu conteúdo para essa
variável chamada conteúdo. A próxima coisa que
queremos fazer é criar padrões que correspondam
aos dados que temos. Felizmente, já criamos botões para corresponder e-mails
e números de telefone, então vamos
usá-los desde que eles funcionam. Esses são os mesmos que
usamos nas classes anteriores. Portanto, esse é o botão
que corresponderia aos e-mails, e esse é o botão que
corresponderia aos números de telefone. No entanto, há uma
pequena diferença. Se você olhar para os números, eles são semelhantes aos nossos,
nos quais eles começam
com parênteses, então há três números, mas em vez de um traço aqui, eles têm um espaço. Então, vamos substituir esse
tracejado pelo espaço. E então eles têm
três números. Temos três números
e depois um traço. E depois para números. Então, isso deve corresponder aos
números da nossa lista, muito bem. Então, esses dois botões devem
estar funcionando muito bem. Agora, mais um botão
que precisamos criar é o padrão de nome
para corresponder aos nomes na lista que
não criamos isso. Criamos agora do zero. Então, se olharmos para os nomes das listas, essencialmente o que temos é qualquer letra maiúscula de a a Z
e, em seguida, qualquer letra minúscula
de a a Z, depois um espaço. Então, novamente, qualquer
letra maiúscula de a a Z
e, em seguida, qualquer
letra minúscula da I2C. Então, isso parece bem
direto. Vamos fazer isso. Então
eu sou termos Doug x, é
assim que se parece. Portanto, esse botão é
separado em duas partes, o FirstName e o LastName. E eles estão separados por
um espaço entre eles. O FirstName é qualquer letra
de a maiúscula a Z maiúscula, mas ocorre apenas uma vez, depois qualquer letra de
minúscula a a z. Desta vez, adicionamos um sinal de mais porque pode
ocorrer uma ou mais vezes. Então, se olharmos para a nossa lista, só
temos uma letra maiúscula aqui e, em seguida, várias letras
minúsculas. E é isso que
nossos botões dizem. Uma letra maiúscula e, em seguida, qualquer número de letras
minúsculas. Então temos um espaço
entre eles. E então o mesmo botão novamente, uma letra maiúscula e, em seguida, qualquer número de letras
minúsculas. Então, agora temos nossos
padrões prontos. Vamos escolher um método de pesquisa. Poderíamos usar encontrar tudo, ou podemos usar o editor de busca. Mas acho que o S é
mais adequado neste caso. Então, vamos criar um bom devedor
para cada padrão de vogal. Então aqui criamos um fundo. É um objeto chamado e-mails, deu a ele o botão
que corresponde aos e-mails. E, em seguida, especifique a string com a qual
queremos combiná-la. Nesse caso, nossa string ou nossos textos são armazenados nessa
variável chamada conteúdo, que leva do nosso arquivo de texto. O mesmo acontece com telefones e nomes. Então, se usássemos o
editor de busca como costumamos fazer, esses são os resultados
que vamos obter. Então, é assim que
costumamos usar encontrar melhor. Aqui está o objeto que queremos
iterar e dizemos que para cada item e e-mails
imprimem cada item. Então, vamos executar nosso programa
e ver como ele se parece. Como você pode vê-lo para as dezenas, o objeto completo, só
precisamos da string ou
do e-mail correspondente. Para isso, vamos
usar o método de grupo de pontos. Vamos executar nosso programa. Agora só está
retornando as cordas. Mas ainda não terminamos. Isso é essencialmente dado
a nós o mesmo arquivo que
já temos onde os e-mails estão listados em um lugar e os nomes
estão listados em outro. Como os listamos um
ao lado do outro? Você pode sugerir
que poderíamos criar outro loop for para
os telefones e nomes. Então, por exemplo, vamos apenas
copiar colar este telefone. Telefones aqui. Desculpe. E, em seguida, o mesmo para
nomes, para nomes de nomes. Então colocamos o nome aqui. Então, vamos executá-lo e
ver como ele se parece. É. Essencialmente, ele se
parece exatamente o mesmo arquivo que
temos que não funciona. Ou seja. Pode-se sugerir colocar esses quatro lóbulos
um embaixo do outro talvez. Portanto, se removermos o espaço aqui,
em seguida, destacamos e pressione Tab, e remova o espaço
destacado e pressione Parar. Ok, então agora dentro um
do outro, vamos ver como se parece. Agora é ainda pior porque
é impresso o primeiro e-mail do que o
número de telefone e, em seguida, os nomes e está apenas uma bagunça. Mas não se preocupe, essas são ferramentas
específicas para isso. Então, essencialmente, o que
queremos fazer é iterar e-mail, telefone e nome. Ao mesmo tempo, não
queremos
iterar e-mails
sozinhos do que
fontes sozinhas , os nomes por si mesmos. Queremos iterá-los
todos no mesmo loop for-loop. Para isso, usaremos as ferramentas
ETL para usar o Editor Tools. Primeiro, temos que importá-lo, não se preocupe, não
precisamos instalar nada. Ele vem por padrão com Python. Como você pode ver, é
sugerido que me disse, agora vamos diminuir um pouco. Feche isso. Ok, agora que o importamos, é
assim
que vamos usá-lo. Então, vamos digitar para nome porque queremos
iterar sobre o nome. E também queremos
iterar por e-mail. E também queremos
iterar sobre a fonte. E então
vamos digitar gzip. E, em seguida, inclua os objetos que
vamos iterar. Meu Deus, o que está acontecendo? Então, nomes, e-mails, telefones. Oh, desculpe. Então, para nome em nomes
e e-mail, e-mails e
diversão e telefones. Então, isso funciona como um loop for
regular para nós, exceto que agora podemos iterar
sobre vários objetos. Então, agora vamos imprimir nossos resultados. Imprimir grupo de pontos de nome
e, em seguida, enviou-nos um e-mail para o grupo. Então, finalmente, descobri isso. Portanto, é muito semelhante
à maneira como iríamos iterar sobre um objeto
usando um loop for regular. A única coisa a lembrar é
incluir todos os objetos que
queremos iterar dentro
do parêntese zip. Agora vamos executar nosso programa
e ver como ele se parece. Isso parece lindo exatamente
como queríamos que fosse. Mas, novamente, ainda não terminamos. Queremos gravar esses
resultados em um arquivo. Em vez de apenas
imprimi-los aqui no terminal. Para isso, vamos abrir um novo arquivo de texto no modo de gravação e vamos nomear os dados classificados. Então f é igual a aberto. Então aqui vamos
digitar o nome do arquivo. Você vai nomeá-lo como TXT
classificado, e depois uma vírgula. E aqui especificamos o modo. Vamos usar o modo W, o que significa motor de bytes. Agora sim, ele diz Modo de gravação, mas essa função aberta
criará um arquivo para nós
se ele não existir, e se ele for para existir, substituirá o
conteúdo desse objeto. Então, se deixarmos como está, isso criará o
arquivo aqui em nosso espaço de trabalho. Vamos criá-lo
em nossa área de trabalho ao lado, ou no arquivo original para isso, vamos especificar o mesmo
local em que nosso arquivo está localizado. Então, vamos cobrir essa luxação
e colá-la aqui. Agora vamos abrir esse arquivo, agora
vamos escrever nele. Então, vamos mudar nosso loop for
para escrever em vez de imprimir. Então vamos digitar F,
qual é o nome do arquivo, pontos, certo? E é isso. Agora, podemos receber um erro aqui. Isso ocorre porque o método de gravação usa
apenas um parâmetro, mas colocamos aqui
três parâmetros. Então, vamos colocá-los
em uma string f. Então f, então vamos
começar uma string. E essa string,
vamos colocar essas variáveis
chamadas pontos, legal. Em seguida, envie um e-mail ao grupo. Então, finalmente, encontrei seu grupo. Então vamos
terminar nossa string com outra
aspas duplas. Agora devemos estar configurados, mas antes de executarmos nosso programa, não
vamos esquecer de
fechar nosso arquivo. Então, vamos digitar def, que é o nome do nosso arquivo. Então, vamos executar nosso programa
e ver como ele se parece. Devemos ver um arquivo
criado em nossa área de trabalho. Porque não há nada
tão determinante porque não
imprimimos nada. Mas se você notou aqui, ele diz dados classificados, este é o arquivo que criamos. Vamos abri-lo e dar uma olhada. É meio que ordenou os dados
para nós, mas não o suficiente. Precisamos colocar
uma nova linha depois imprimir o nome,
e-mail e telefone. Então, aqui, depois de escrevermos nome, e-mail e telefone para criar
uma nova linha depois disso. E agora vamos executar nosso programa. E não se preocupe se
executarmos nosso programa novamente, ele não
criará um novo arquivo. Em vez disso, ele
substituirá nosso arquivo existente. Então, vamos executar o programa e
dar uma olhada em nosso arquivo. Observe que nossas vírgulas
separando esses valores, isso é porque os mantivemos em nossa string f, como você pode ver. Então, se você preferir
não tê-las, você pode remover essas vírgulas e seu programa
funcionará muito bem. No entanto, acho que
é mais fácil trabalhar com dados quando eles são
separados por vírgulas. Opcionalmente, poderíamos
rotular nossos dados. Então aqui vamos
digitar nome, depois dois pontos, depois dois pontos, depois, finalmente
, e depois dois pontos. E agora vamos executar nosso programa
e ver como ele se parece. Isso parece muito mais legível e muito
mais fácil de trabalhar. Vamos abrir o primeiro arquivo ao lado dele e
compará-los juntos. A diferença é dia e
noite. E nós fizemos isso. E quais 15 linhas de
código menos o espaçamento. Isso levaria muito
tempo para classificá-lo manualmente. E há também a
possibilidade de erro humano, que pode executar
todo o banco de dados para nós. Em vez disso, com poucas linhas de código, deixamos a máquina fazer o trabalho e eliminar a
possibilidade de perder um valor ou dois e criar um efeito de bola de neve
que executa nossos dados. Então, vamos recapitular nosso código
que importamos ou um medicamento X e ferramentas de editor para iterar
sobre vários objetos. Em seguida,
abrimos o arquivo do qual vamos ler os dados e
especificar sua localização e abri-lo como
f. Em seguida, criamos uma variável e digitamos
conteúdo igual a F, F, que é nosso arquivo, o tratamento. Portanto, essa variável de conteúdo
lê nosso arquivo de texto. Em seguida, criamos um padrão para
nosso e-mail, telefone e nome. Em seguida, criamos
um e-mail encontrado em um objeto e demos o
padrão que ele usa. Portanto, os e-mails usam o botão de e-mail e
combinamos com o conteúdo, que inclui os
dados e nosso TextFile. O mesmo vale para fontes
e para nomes. Em seguida, criamos um novo
arquivo e o abrimos no modo
W ou no modo de gravação e
nomeamos dados classificados. E então criamos um loop for que itera sobre
três objetos, nomes, e-mails e telefones. E então nós os rotulamos
enquanto os escrevemos em nosso arquivo de texto para ter um tempo
mais fácil deixá-los. Depois de escrevermos em
nosso arquivo, nós o fechamos. Então é isso para o vídeo de hoje. Muito obrigado por assistir e espero
vê-lo no próximo.