Manipolazione di stringhe

di il
8 risposte

Manipolazione di stringhe

Salve a tutti,
propongo quest'esercizio: data una stringa contenente una frase, scrivere una funzione che restituisca una lista contenente le parole della frase (esclusi spazi e caratteri speciali).
Propongo questo ragionamento:
1)creare una lista vuota
2)scorrere tutta la stringa
3) ogni qualvolta incontro uno spazio o un carattere speciale mi fermo e appendo la parola nella lista
domanda 1: potrei utilizzare il break per fermarmi quando trovo uno spazio/carattere speciale o in questo caso non serve?
domanda 2: per sfruttare la condizione da imporre creo una stringa fatta di sole vocali e consonanti o c'è un metodo più immediato?

8 Risposte

  • Re: Manipolazione di stringhe

    s = "Ciao, sono una stringa: togliete la punteggiatura e splittatemi!"
    x = s.translate(s.maketrans(",:!", "   ")).split()
    print(x)
  • Re: Manipolazione di stringhe

    Purtroppo ho dimenticato di precisare: "...senza utilizzare la funzione split". sono alle prese con la programmazione da poco e cerco di risolvere i problemi cercando di utilizzare il meno possibile le funzioni built-in per migliorare l'approccio logico. Inoltre dovrò sostenere degli esami dove non è permesso l'utilizzo di alcune funzioni built-in.
    ...ma ad ogni modo grazie per la risposta!
  • Re: Manipolazione di stringhe

    Ma usare Python senza le funzioni built-in che senso ha?

    Comunque
    s = "Ciao, sono una stringa: togliete la punteggiatura e splittatemi!"
    x = []
    temp = ""
    for c in s:
        if c in "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz":
            temp += c
        else:
            if temp != "":
                x.append(temp)
                temp = ""
    if temp != "":
       x.append(temp)        
    print(x)
    p.s.: nei prossimi esercizi, però, il codice lo proponi tu, altrimenti stai violando il regolamento...
  • Re: Manipolazione di stringhe

    def pulisci(frase):
        nuova_frase = ""
        for carattere in range(len(frase)):
            if frase[carattere].lower() in alfabeto:
                nuova_frase += frase[carattere]
        return nuova_frase
    
    def ottieni_parole(frase):
        lista_parole = []
        parola = ""
        for lettera in range(len(nuova_frase)):
            if nuova_frase[lettera] != " ":
                parola += nuova_frase[lettera]
                continue
            lista_parole.append(parola)
            parola = ""
        return lista_parole
    
    frase = "ciao, mariano ha detto: 'voglio il sushi' ."
    alfabeto = "abcdefghijklmnopqrstuvwxyz "
    
    nuova_frase = pulisci(frase)
    lista_parole = ottieni_parole(nuova_frase)
    
    print(lista_parole)
  • Re: Manipolazione di stringhe

    def distanza(s,c):
             distanze=[]
             cont=0
             for lettera in s:
                 for i in range(len(s)):
                    if(s[i]==c):
                       for j in range(len(s[i]),len(s)):
                           if(s[j]==c):
                              cont=len(s[j])-len(s[i])
                              distanze.append(cont)
                 return distanze
                 print(max(distanze))
    
    s="anatomia"
    c="a"
    print(distanza(s,c))
    P.S. grazie per le risposte agli esercizi precedenti,mi sono assentato dal forum per qualche giorno.

    Propongo un altro codice che ho provato(ma che non funziona) dove devo trovare in una stringa s la distanza max tra due caratteri uguali a c.
  • Re: Manipolazione di stringhe

    1) Indentanzione farlocca
    2) La lunghezza di un singolo carattere è sempre 1
    3) print(max(distanze)) non sarà mai eseguito
    4) Utilizza enumerate per scorrere s
  • Re: Manipolazione di stringhe

    L'indentazione si era un po' sballata perchè ho inserito dopo i comandi per racchiudere il codice,quindi molto farlocca. Comunque poi ho scritto il programma così e sembra che funzioni:
    def distanza(s,c):
       dist=[]
       posti=0
       for i in range(len(s)):
           if(s[i]==c):
                dist.append(i)
                posti=max(dist)-min(dist)
       return posti 
       
    print(distanza(s,c))
  • Re: Manipolazione di stringhe

    1) posti=max(dist)-min(dist) mettilo fuori dal ciclo, è inutile calcolarlo ad ogni iterazione
    2) dist contiene tutte le occorenze del carattere ricercato in ordine di posizione, per calcolare la distanza ti basta fare la differenza dei valori della testa e della coda della lista
Devi accedere o registrarti per scrivere nel forum
8 risposte