Pagina 1 di 1

Python

Inviato: ven 11 nov 2005, 12:06
da bertolottipf
Ho da un po' inizato a dedicarmi a python con l'intento di creare qualche bel programma.

Dato che vidi, se ricordo bene, sotto Debian un programma, probabilmente fatto in C, che dato il numero in cifre lo restituiva in lettere, ho deciso di provare a farne uno simile in python. Voi come l'avreste fatto.

A dirla tutta, lo scopo finale dell'appendimento di Python è quello di creare un programma (Encyusic, così l'ho chiamato) che gestisca un DB semplicistico in MySQL, diviso in due tabelle. Mi sto dedicando alla tabella 'testcanzone' che è così divisa:

id
titolo
cantante
testo_orig
testo_trad

suppongo non sia il caso che io scriva tutte le specifiche.
Il problema nell'inserimento si presenta al 'testo_orig' in quanto non ho il diritto di fare ritorno a capo.
Come risolvereste tale problema?

Inviato: ven 11 nov 2005, 14:33
da touchstyle
Devi convertire il "ritorno a capo" in MySql, dovrebbe essere sempre il \n ma non ci giurerei...

Inviato: ven 11 nov 2005, 18:35
da bertolottipf
Uhm... Sì, già, forse... Ma mi par proprio di sì.
Il problema è che questo modo di crivere il programma, che vedi sotto, traduce già tutti i caratteri
per esempio, per scivere l'apice, scrivi ' e non \' come faresti. In questo modo non riesci a rimpiazzare il ritorno a capo no un carattere simile. :(

#! /usr/bin/env python

import os
#import shelve
import MySQLdb

x= 'n'
messaggio="* * * EncyMusic * * *"
spaz=" "
"""testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()"""

while x!= "u":
os.system('clear')
print messaggio
print " i: info"
print " t: tesi musicali"
print " e: enciclopedia musicale"
print " u: uscita"
print "+t: aggiunta al DB testi musicali"
print "-t: eliminazione dal DB testi musicali"
print "+e: aggiunta al DB enciclopedia musicale"
print "-e: eliminazione dal DB testi musicali"
x = raw_input(">")
if x in ("i", "I"):
os.system('clear')
print messaggio
print "VERSIONE: 0.0.1"
print "PRODUZIONE: Paolo Francesco Bertolotti"
print "EDITOR: Emacs/ Kwrite 4.4"
k = raw_input(">")
elif x in ("t", "T"):
os.system('clear')
print messaggio
print "s: stampa tutto il DB"
print "t: cerca per titolo"
print "c: cerca per cantante(/gruppo)"
print "g: cerca generale"
print "i: indice"
k = raw_input(">")
if k in ("s", "S"):
os.system('clear')
print messaggio
print "TUTTI I TESTI"
testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()
ctesti.execute("""SELECT titolo, cantante, testo_orig, testo_trad FROM testicanzone""")
rec = ctesti.fetchall()
for i in rec:
print 'Titolo: ' + i[0] + \
'\nCantante: ' + i[1] + \
'\nTesto originale: ' + i[2] + \
'\nTesto tradotto: ' + i[3] + \
'\n\n---\n\n'
dsf = raw_input(">")
elif k in ("t", "T"):
os.system('clear')
print messaggio
print "RICERCA PER TITOLO"
t = raw_input(">")
dsf = raw_input(">")
elif k in ("c", "C"):
os.system('clear')
print messaggio
print "RICERCA PER CANTANTE"
c = raw_input(">")
dsf = raw_input(">")
elif k in ("g", "G"):
os.system('clear')
print messaggio
print "RICERCA GENERALE"
g = raw_input(">")
dsf = raw_input(">")
elif k in ("i", "I"):
os.system('clear')
else:
os.system('clear')
elif x in ("e", "E"):
os.system('clear')
print messaggio
print "e"
k = raw_input(">")
elif x in ("+t", "+T"):
os.system('clear')
print messaggio
print"Che canzone vuoi aggiungere?"
tit = raw_input("Titolo? ")
cant = raw_input("Cantante? ")
test_o = raw_input("Testo originale? ")
test_t = raw_input("Testo tradotto? ")

testi = MySQLdb.connect(user="root", passwd="Piolino80", db="encymusic")
ctesti = testi.cursor()
ctesti.execute('INSERT INTO testicanzone (titolo, cantante, testo_orig, testo_trad) VALUES(%s, %s, %s, %s)', (tit, cant, test_o, test_t))

dsf = raw_input(">")
elif x in ("-t", "-T"):
os.system('clear')
print messaggio
print "Che canzone vuoi eliminare? "
tit=raw_input("Titolo? ")
cant=raw_input("Cantante? ")
testo=raw_input("Testo? ")
dsf = raw_input(">")
elif x in ("+e", "+E"):
os.system('clear')
print messaggio
elif x in ("-e", "-E"):
os.system('clear')
print messaggio
else:
os.system('clear')

os.system('clear')
print "Grazie per aver provato il mio programma"

Ritorno a capo o non ritorno a capo! Questo è il problema!!!
CIAO!

Inviato: ven 11 nov 2005, 21:07
da touchstyle
Usando php, per convertire gli accapo di un testo proveniente da un DB MySql, utilizzo la funzione nl2br(),che converte gli a capo \n in <br/>.
In Mysqli gli a capo sono proprio i caratteri:

Codice: Seleziona tutto

\n
, è questo lo standard dei sistemi *nix, mentre in Windows dovrebbe essere

Codice: Seleziona tutto

\r\n
.
Spero di esserti stato utile.

Ciao,
Touch.

Inviato: ven 11 nov 2005, 21:19
da touchstyle
Dimenticavo due cose:

-1) Posta il tuo problema anche su http://www.nogood.it/prog/, è un forum di programmatori, gente in gamba (amici di Slacky :wink: ).

-2) Sto leggendo "Pensare da informatico", un ottimo manuale su Python e programmazione in generale, lo puoi trovare qui : http://web.econ.unito.it/terna/infsimec ... nk_ita.pdf ma anche da altre parti...

Ciao,
Touch.