Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 6 da Aula 7 - Expressão regulares

Já havia testado da forma que foi apresentado na ajuda:

def procurar_regex(nomes):
    print('Digite a expressão regular')
    regex = raw_input()
    nomes_concatenados = ' '.join(nomes)
    resultados = re.findall(regex, nomes_concatenados)
    print(resultados)
`

Porém, se for cadastrado Ariann , Michael, Martins e for procurar por 'M', a reposta não é a esperada.

Segue o arquivo appy.py:

# -*- coding: UTF-8 -*-
import re

def cadastrar(nomes):
    print 'Digite: o nome:'
    nome = raw_input()
    nomes.append(nome)

def listar(nomes):
    print 'Listando nomes'
    for nome in nomes:
        print nome

def remover(nomes):
    print 'Qual nome você gostaria de remover?'
    nome = raw_input()
    nomes.remove(nome)

def alterar(nomes):
    print 'Qual nome você gostaria de alterar?'
    altera = raw_input()
    if(altera in nomes):
        print'Nome existe, digite o novo nome:'
        novo = raw_input()
        nomes[nomes.index(altera)] = novo
    else:
        print'Nome inválido.'

def procurar(nomes):
    print'Digite nome a procurar:'
    nome_a_procurar = raw_input()
    if(nome_a_procurar in nomes):
        posicao = nomes.index(nome_a_procurar)
        print 'Nome existe e está na posição: %s' % (posicao+1)
    else:
        print'Nome inválido'

def procurar_regex(nomes):
    print('Digite a expressão regular')
    regex = raw_input()
    nomes_concatenados = ' '.join(nomes)
    resultados = re.findall(regex, nomes_concatenados)
    print(resultados)

def menu():
    nomes = []
    escolha = ''
    while(escolha != '0'):
        print 'Digite: 1 para cadastrar, 2 para listar, 3 para remover, 4 para alterar, 5 para procurar, 6 para regex, 0 para terminar'
        escolha = raw_input()
        if(escolha == '1'):
            cadastrar(nomes)
        if(escolha == '2'):
            listar(nomes)
        if(escolha == '3'):
            remover(nomes)
        if(escolha == '4'):
            alterar(nomes)
        if(escolha == '5'):
            procurar(nomes)
        if(escolha == '6'):
            procurar_regex(nomes)

menu()
3 respostas
solução!

A forma que é apresentada é diferente da forma que você utilizou. Seu código está considerando um espaço. Ele está assim:

   nomes_concatenados = ' '.join(nomes)

O correto é:

nomes_concatenados = ''.join(nomes)

Não há espaço entre as aspas simples. Porém, entendo que a formatação do texto pode levar à esse erro :)

Aproveito para pedir que você, quando for postar uma dúvida, formate seu código, caso contrário ele ficará ilegível. Eu editei seu post e formatei seu código para que eu pudesse entendê-lo. Onde aprender a formatar? Na caixinha do lado, onde já um botãozinho escrito 'formatação`.

No mais, tudo perfeito com seu código e parabéns, continue avançado. O treinamento de padrões de projeto em Python te aguarda! :)

Mil perdões pelo equívoco e muito obrigado.

Relaxa! Acontece. Bom estudo Ariann!