-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Il 05/10/2011 16:20, Valerio Pachera ha scritto: > Ciao ragazzi, ho bisogno di una dritta. > Ho necessità di rinominare dei file da un windows 2008. > Questi file contengono dei caratteri accentati o particolari, come '°'. > Devo sostituire questi caratteri con caratteri alfanumerici non accentati. > > Siccome la gestione delle stringe non è una cosa banale, come mi > consigliate di procedere?
Come vuoi procedere? Processare in modalità "batch" tutti i files in una determinata directory oppure rinominare i files uno ad uno? Nel primo caso puoi: 1) Usare os.walk http://docs.python.org/library/os.html#os.walk per processare i singoli files. E' **importante** passare una stringa Unicode alla funzione os.walk, in modo che i nomi dei files restituiti siano stringhe Unicode. Altrimenti in Python 2.x (in 3.x le cose sono cambiate) avrai nomi di files come byte strings codificate secondo l'encoding locale. 2) Rinominare ciascun file secondo un determinato algoritmo. E di possibili algoritmi me ne vengono in mente molti. Marco ti ha suggerito unidecode, che non conosco e non sono sicuro sia la scelta migliore. Un altra soluzione è, ad esempio: >>> import unicodedata >>> test = u'Manlio çè°' >>> print unicodedata.normalize('NFKD', test) Manlio çè° >>> tmp = unicodedata.normalize('NFKD', test) >>> b = tmp.encode('us-ascii', 'ignore') >>> print b Manlio ce L'esempio usa alcuni concetti avanzati di Unicode e del supporto ai codecs di Python; in pratica la normalizazione NFKD scompone alcuni caratteri in una sequenza di caratteri equivalenti in Unicode. Ad esempio il carattere "é" è composto dal semplice carattere "e" più il carattere che denota l'accento. Infine, quando facciamo l'encoding, diciamo alla funzione encode di ignorare i caratteri che non sono ASCII. E' possibile fare altre cose, oltre ad ignorare: http://docs.python.org/library/codecs.html#codec-base-classes Ciao Manlio -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAk6MdM4ACgkQscQJ24LbaUQ3HwCdFAjqVnzHEXcHOOg8xI9uIVpN iywAmwb9ydjLpSWRuuqgQndhQJUwOxM+ =Fnh2 -----END PGP SIGNATURE----- _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python