Confronto fra stringhe in Python

In quest' articolo per ora non si presenta nulla di nuovo relativamente a quanto detto per il linguaggio a oggetti Java nel normale confronto tra stringhe, dove non vi è però nessuna dinamicità nell'operazione, ossia non si ha tipologia di conversione del valore fornito dalla sorgente in una stringa criptata e poi riconvertita a valle di questa, dove come abbiamo visto in precedenza il Java nell'assertEquals presentava dei problemi nel confronto nell'utilizzo di codice in streaming. Attualmente il confronto presentato in Python è un codice che ha la sola cinematica della compilazione  relativa al passaggio del codice dal linguaggio uomo a quello macchina e poi riconvertito nella pila a uomo. Per l'esecuzione del codice si utilizza l'IDLE Python 3.6.3 che viene compilata ed eseguita dalla shell di bash di un kernel linux superiore al 2.6, presente in un mac os, che può essere eseguita attraverso il terminal. Per quanto riguarda i commenti dei confronti fra stringhe in quelli visti precedentemente con i linguaggi Java e C++ ad oggetti ed il strutturale C, diciamo che in questo caso il Python come per il Java riescono ad evitare la perdita di dati come si verificava per la dimensione dei vettori e per l'operatore di confronto == per il C strutturale e per il C++ ad oggetti così come lo fornisce lo Stroustrup perché  utilizzano delle librerie che vengono create ed importate apparentemente senza i problemi che si riscontravano nel C++, dove però in termini statistici almeno per il C++ il problema potrebbe essere risolvibile con l'importo di librerie ed anche di compilatori opportuni, poiché sia il Bordland che altri IDE e compilatori in questo linguaggio risultano essere difettosi a seconda della versione che si utilizza e asseconda della macchina sulla quale gira. Su Java questo non accadeva poiché essa è dotata di una macchina virtuale che ne rende indipendente l'esecuzione del codice a prescindere dall'architettura della macchina. Su Python come abbiamo detto utilizziamo gli stessi comandi visti per la compilazione ed esecuzione in java che erano javac e java installati nella cartella /bin principale di un sistema monolitico derivato da minix in questo caso linux con il terminal ed il codice per compilare ed eseguire il linguaggio del Python questa volta è fornito dalla stringa "python" che compila ed esegue il codice scritto sul IDLE o su un documento di testo qualsiasi che ha come estensione .py. La libreria che introduciamo si chiama re, con import re e consente il confronto tra stringhe e prevalentemente sta per rejection; o reiezione dei dati. 

Una particolarità del python è l'indentazione del codice deve essere eseguita in modo scrupoloso rispetto agli altri linguaggi, altrimenti il codice non sarà compilato ne eseguito

Il codice è il seguente (che inserito nell'IDLE fornisce i colori differenti per una comprensione maggiormente immediata):

#####

import re
#Test number
for test_string in ['5-12345', 'ILL-EGAL']:
    if re.match(r'^\d{1}-\d{5}$', test_string):
        print test_string, 'is a valid number'
              if test_string =='5-12345':
                  print test_string, 'Test string is == 5-1'
              else:
                  print test_string, 'Test string is != 5-1 rejected'

    else:
         print test_string, 'rejected'

####

L'esecuzione del codice opportunamente indentato sul terminale di shell bash di linux fornisce la seguente risposta:   

####

Domenicos-MacBook-Pro:Desktop domenico$ python TestString2.py 

5-12345 is a valid number

5-12345 Test string is == 5-12345

ILL-EGAL rejected

####

Dove si nota che la dimensione della stringa confrontata è di 7 caratteri e tutti i caratteri sono riconosciuti, non vi è alcuna perdita di dati come accadeva in C. Qundi come detto in anticipo il Python si presenta allo stesso modo del Java per una compilazione prettamente formalizzata ad un annotazione del codice...resta da testare quello che accade nel caso di streaming del codice, anche se il compilatore ci anticipa già che l'indentazione del codice è un aspetto fondamentale per la compilazione, per cui si può già anticipare che è facile che attraverso uno spostamento dinamico di dati si perda l'indentazione di questo....verificheremo se esiste un programma per lo streaming in Python che ci consenta di testare la perdita dei dati nel confronto fra stringhe.