Jump to content
Luis Meirelles

Mostrar index exato de um caractere em uma string

Recommended Posts

Olá, estou com uma dúvida. Se eu quiser saber o índice de uma letra em uma string, eu uso o .index(), correto?

O seguinte código:

nom

nome = 'luis'
print(nome.index('l'))

Retornaria 0, correto?

Também poderia usar o .find (), que obteria o mesmo resultado, mas se eu modificar essa string, e ela tiver duas letras iguais, então este código:

sobrenome = 'meirelles'
print(sobrenome.index('l'))

Retornaria 5, sendo que o primeiro 'l' está no index cinco, mas tem um segundo 'l', que está no Index 6.Como eu faço para mostrar o Index exato dos caracteres, mesmo se eles se repetirem na string??

 

Desde já, agradeço.

Share this post


Link to post
Share on other sites
import re
s = "string com caracteres repetidos"
print [m.start() for m in re.finditer('e', s)]

 

Share this post


Link to post
Share on other sites
1 hora atrás, _Isis_ disse:

import re
s = "string com caracteres repetidos"
print [m.start() for m in re.finditer('e', s)]

 

Cara, to aqui de novo porque quando eu executo meu script com esse codigo, ele, tipo faz uma lista com uma lista dentro (nao sei se uda alguma coisa, pois antes eu estudava Java e la tinha arrays 2D ou matrizes, e elas se comportavam diferente). no meu programa, eu tenho que adicionar esses valores em uma lista que ja tem outros valores com o .append(). Tem como eu adicionar sem ficar com estes colchetes a mais??

Share this post


Link to post
Share on other sites

Tanto na versão 2.7 como na 3.6 é gerada uma lista simples contendo os índices. Não tem nada a mais dentro.

Share this post


Link to post
Share on other sites

nao sei se você me entendeu, sim, e gerada um lista simples, mas quando eu coloco tipo, esse codigo:

import re
lista = [3, 8]
s = "string com caracteres repetidos"
indices = ([m.start() for m in re.finditer('e', s)])
lista.append(indices)
print(lista)

ele retorna: [3, 8, [17, 19, 23, 25]]

tem como fazer ele retornar algo como [3, 8, 17, 19, 23, 25], ou nao muda nada??

Share this post


Link to post
Share on other sites

nao sei se você me entendeu

Não, porque a não ser que você poste o código inteiro, não tenho como saber o que você está fazendo.

 

Use o método extend, não o append.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By r1que
      como camuflar a url dentro do arquivo e colocar em formato .pyo alguem sabe ?
    • By Augustomesquita
      Bom dia pessoal!
      Vocês também estão programando em primeira pessoa? Recentemente escrevi este artigo e gostaria de compartilhar a ideia com vocês.
      Pare de programar em primeira pessoa!
    • By Rengavitp
      Boa noite Pessoal,
       
      Estou tentando implementar um projeto em python, mas comecei a aprender python agora e estou tendo dificuldade em fazer comandos sql com ele. No código abaixo sempre recebo a mensagem de erro: 
      cursor.execute(sql,valor) File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 210, in execute query = query % args TypeError: not all arguments converted during string formatting  
      o código é este abaixo, se eu passar um valor fixo funciona normal, mas colocando valor dinamico nao vai...
      con = MySQLdb.connect(host="192.168.0.10, port=3306 user="@@@@", passwd="@@@@@@@@", db="acessos") cursor = con.cursor() valor = ('teste') sql = "insert into registros_acesso values (%s)" cursor.execute(sql,valor) con.commit() con.close() Alguém pode me dar uma ajuda?
    • By SSO990
      Escrever um programa que leia um número não determinado de valores e calcule a média aritmética dos valores lidos, a quantidade de valores positivos, a quantidade de valores negativos e o percentual de valores negativos e positivos. A leitura deve parar quando o número informado for 9999. Mostre os resultados. 
    • By Coghi000
      Boa tarde, preciso de ajuda para terminar este exercicio, o que acontece nele, é que quando ele roda a função ministra da classe Professor, ele ve se a soma da carga horário é maior que 200, o correto era ele não adicionar mais la lista disciplinas assim que passa-se de 200, mas ao invés disso e ele está adicionando mesmo passando da carga horaria, não  estou conseguindo resolver =/, alguem pode dar uma força.
       
      class Disciplina():
          '''
          Abstração de uma disciplinai, possui os atributos Nome e carga Horária
          '''
          def __init__(self, nome: str, carga_horaria: int) -> None:
              self._nome = nome
              self._carga_horaria = carga_horaria
          def get_nome(self) -> str:
              '''
              Acessor do atributo nome
              '''
              return self._nome
          def get_carga_horaria(self) -> int:
              '''
              Acessor do atributo cargar horaria
              '''
              return self._carga_horaria

      class Pessoa():
          '''
          Abstração de uma pessoa no Modelo, classe base para Aluno e Professor
          que contém dados pertencentes a ambos.
          '''
          def __init__(self, nome: str, telefone: int, email: float) -> None:
              self._nome = nome
              self._telefone = telefone
              self._email = email
          def get_nome(self) -> str:
              '''
              Acessor do atributo Nome
              '''
              return self._nome
          def get_telefone(self) -> int:
              '''
              Acessor do atributo telefone
              '''
              return self._telefone
          def set_telefone(self, novo_telefone: int) -> None:
              '''
              Mutador do atributo telefone deve checar se é um número inteiro e,
              caso contrário devolver um TypeError
              '''
              if type(novo_telefone) not in [int]:
                  raise TypeError('Numero invalido')
              self._telefone = novo_telefone
          def get_email(self) -> str:
              '''
              Acessor do atributo email
              '''
              return self._email
          def set_email(self, novo_email) -> None:
              '''
              Mutador do atributo eail, deve checar se éum email válido
              (se possuir o caractere '@') e caso contrário devolver
              um ValueError
              '''
              if novo_email.count('@') == 0 or novo_email.count('@') > 1:
                  raise ValueError('E-mail invalido')
              self._email = novo_email

      class Aluno(Pessoa):
          def __init__(self, nome: str, telefone: int,
                       email: str, n_matricula: int) -> None:
              super().__init__(nome, telefone, email)
              self._n_matricula = n_matricula
              self._disciplinas = []
          def get_matricula(self) -> int:
              '''
              Acessor do atributo matricula
              '''
              return self._n_matricula
          def matricular(self, disciplina: Disciplina) -> None:
              '''
              Realiza matrícula do Aluno na disciplina
              '''
              self._disciplinas.append(disciplina)
              return None
          def lista_disciplinas(self) -> list:
              '''
              Devolve a lista de disciplinas em que o aluno esta matriculado
              '''
              return self._disciplinas

      class Professor(Pessoa):
          '''
          Entidade professor do Modelo
          '''
          def __init__(self, nome, telefone, email):
              self._nome = nome
              self._telefone = telefone
              self._email = email
              self._disciplinas = []
          def ministra(self, disciplina: Disciplina) -> None:
              '''
              Atribui o professor como ministrante da disiciplina
              Um professor não pode dar mais de 200 horas de aula,
              Caso um professor tente atribuir mais de 200h devolve
              ValueError
              '''
              horas = []
              horas.append(disciplina._carga_horaria)
              soma = 0
              for item in horas:
                  print(item)
                  soma = item + item
                  if soma > 200:
                      return ValueError
                  else:
                      self._disciplinas.append(disciplina)
                      return None
          def lista_disciplinas(self) -> list:
              '''
              lista as disciplinas ministradas pelo professor
              '''
              pass
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.