[Python] Eliminare carattere fine riga
Buongiorno a tutti. creando una tupla da un file di testo, mi ritrovo il fine riga \n listP = tuple(open(folfderList, 'r')) come posso eliminarlo in maniera non troppo macchinosa? Lorenzo Macchiavelli web designer ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
Buongiorno a tutti. creando una tupla da un file di testo, mi ritrovo il fine riga \n listP = tuple(open(folfderList, 'r')) come posso eliminarlo in maniera non troppo macchinosa? stringa.rstrip() Walter ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
2012/7/24 Lorenzo Macchiavelli lmacchiave...@gmail.com: Buongiorno a tutti. creando una tupla da un file di testo, mi ritrovo il fine riga \n listP = tuple(open(folfderList, 'r')) come posso eliminarlo in maniera non troppo macchinosa? se il file non è enorme puoi fare: listP = open(folfderList, 'r').read().split('\n') [occhio che ti tiene tutto in memoria] ciao, alberto ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
2012/7/24 Walter Valenti waltervale...@yahoo.it stringa.rstrip() Giusto, ma meglio ricordare che vengono rimossi anche gli spazi bianchi, i tab, i CR (carriage return), i LF (line feed), i FF (form feed) e i VT (vertical tab): fwefw \n\r\t\f\v.rstrip() 'fwefw' Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 2012-07-24 12:18, Marco Beri wrote: 2012/7/24 Walter Valenti waltervale...@yahoo.it stringa.rstrip() Giusto, ma meglio ricordare che vengono rimossi anche gli spazi bianchi, i tab, i CR (carriage return), i LF (line feed), i FF (form feed) e i VT (vertical tab): fwefw \n\r\t\f\v.rstrip() 'fwefw' ...quindi si può anche dire che rstrip('\n') fa quello che era stato chiesto: cancella i LF finali senza toccare i whitespace. In [1]: 'fwefw \n'.rstrip('\n') Out[1]: 'fwefw ' In windows forse rstrip('\r\n') è anche meglio, ma non sono sicuro sia necessario (forse py converte CRLF - LF? Non mi ricordo). -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 24/07/12 13:18, Marco Beri wrote: 2012/7/24 Walter Valenti waltervale...@yahoo.it mailto:waltervale...@yahoo.it stringa.rstrip() Giusto, ma meglio ricordare che vengono rimossi anche gli spazi bianchi, i tab, i CR (carriage return), i LF (line feed), i FF (form feed) e i VT (vertical tab): fwefw \n\r\t\f\v.rstrip() 'fwefw' Però accetta anche un argomento opzionale che limita la stringa strippata: asdasds \n\r\t\f\vmario.rstrip('\n') 'asdasds \n\r\t\x0c\x0bmario' asdasds \n\r\t\f\vmario.rstrip('mario') 'asdasds \n\r\t\x0c\x0b' C'è da tenere presente (se rilevante) il problema della stringa che rappresenta il newline su piattaforme diverse. Lorenzo. Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
2012/7/24 Lorenzo Sutton lorenzofsut...@gmail.com asdasds \n\r\t\f\vmario.rstrip('**mario') 'asdasds \n\r\t\x0c\x0b' Questo non fa quello che pensi ma strippa tutte le m, le a, ecc. aaarroim.rstrip(mario) '' Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
2012/7/24 Daniele Varrazzo p...@develer.com In windows forse rstrip('\r\n') è anche meglio, ma non sono sicuro sia necessario (forse py converte CRLF - LF? Non mi ricordo). Secondo me non converte. marcob@pc-beruntu:~$ od -c x 000 \r \n 002 marcob@pc-beruntu:~/tmp$ python Python 2.7.2+ (default, Oct 4 2011, 20:03:08) [GCC 4.6.1] on linux2 Type help, copyright, credits or license for more information. file(x, r).read() '\r\n' file(x, rb).read() '\r\n' Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
2012/7/24 Marco Beri marcob...@gmail.com: 2012/7/24 Daniele Varrazzo p...@develer.com In windows forse rstrip('\r\n') è anche meglio, ma non sono sicuro sia necessario (forse py converte CRLF - LF? Non mi ricordo). Secondo me non converte. marcob@pc-beruntu:~$ od -c x 000 \r \n 002 marcob@pc-beruntu:~/tmp$ python Python 2.7.2+ (default, Oct 4 2011, 20:03:08) [GCC 4.6.1] on linux2 Type help, copyright, credits or license for more information. file(x, r).read() '\r\n' file(x, rb).read() '\r\n' Converte se glielo dite (aka operatore 'U') :D open('foo.txt', 'wb').write(1\n2\r\n3\n) open('foo.txt', 'r').read().split('\n') ['1', '2\r', '3', ''] open('foo.txt', 'rU').read().split('\n') ['1', '2', '3', ''] ref: http://docs.python.org/library/functions.html#open ciao! alberto ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 2012-07-24 13:14, Marco Beri wrote: 2012/7/24 Daniele Varrazzo p...@develer.com In windows forse rstrip('\r\n') è anche meglio, ma non sono sicuro sia necessario (forse py converte CRLF - LF? Non mi ricordo). Secondo me non converte. marcob@pc-beruntu:~$ od -c x Che fai, testi su linux se lo script funziona in windows? :) Intendevo questo: http://docs.python.org/release/2.3/whatsnew/node7.html. Non mi ricordo se *in windows* ottieni \r\n oppure \n quando leggi in modo testo un file che contiene \r\n. Su linux gli universal newline sono disabilitati di default. Mi sembra che su windows siano abilitati di default ma non ne sono sicuro. Qualcuno può fare una prova? python -c print 'hello'; print 'world' test python -c print list(open('test', 'r')) python -c print list(open('test', 'rU')) Cosa restituiscono gli ultimi 2 comandi in windows? -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 24/07/12 14:10, Marco Beri wrote: 2012/7/24 Lorenzo Sutton lorenzofsut...@gmail.com mailto:lorenzofsut...@gmail.com asdasds \n\r\t\f\vmario.rstrip('mario') 'asdasds \n\r\t\x0c\x0b' Questo non fa quello che pensi ma strippa tutte le m, le a, ecc. aaarroim.rstrip(mario) '' Grazie per la doverosa precisazione! In effetti strippa tutte le m, a ecc. a destra mario sono mario hai capito o no che sono maarioom.rstrip('mario') 'mario sono mario hai capito o no che sono ' usando il primo carattere non matchato del set dato come argomento come 'confine' a destra e/o sinistra a seconda del tipo di strip 'aaaiiirrrMrmmmo'.rstrip('mario') 'aaaiiirrrM' 'aaaiiirrrMrmmmo'.lstrip('mario') 'Mrmmmo' 'aaaiiirrrMrmmmo'.strip('mario') 'M' Nel caso delle \n quindi direi che .rstrip('\n') strippa tutte le \n a destra fino a qualcosa che non sia una \n: 'e adesso basta co sto povero mario!\n\n\n\n\n\n\n'.rstrip('\n') 'e adesso basta co sto povero mario!' Lorenzo. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
Su linux gli universal newline sono disabilitati di default. Mi sembra che su windows siano abilitati di default ma non ne sono sicuro. Qualcuno può fare una prova? python -c print 'hello'; print 'world' test python -c print list(open('test', 'r')) python -c print list(open('test', 'rU')) Cosa restituiscono gli ultimi 2 comandi in windows? Microsoft Windows XP [Versione 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\dexpython -c print 'hello'; print 'world' test C:\Documents and Settings\dexpython -c print list(open('test', 'r')) ['hello\n', 'world\n'] C:\Documents and Settings\dexpython -c print list(open('test', 'rU')) ['hello\n', 'world\n'] C:\Documents and Settings\dexpython Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 2012-07-24 13:44, Marco De Paoli wrote: Su linux gli universal newline sono disabilitati di default. Mi sembra che su windows siano abilitati di default ma non ne sono sicuro. Qualcuno può fare una prova? python -c print 'hello'; print 'world' test python -c print list(open('test', 'r')) python -c print list(open('test', 'rU')) Cosa restituiscono gli ultimi 2 comandi in windows? Microsoft Windows XP [Versione 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\dexpython -c print 'hello'; print 'world' test C:\Documents and Settings\dexpython -c print list(open('test', 'r')) ['hello\n', 'world\n'] C:\Documents and Settings\dexpython -c print list(open('test', 'rU')) ['hello\n', 'world\n'] C:\Documents and Settings\dexpython Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32 Grazie, in questo caso rstrip('\n') dovrebbe funzionare senza problemi anche su windows (ma non su file con CRLF in linux, a meno che non sia stato aperto con 'rU'). -- Daniele Varrazzo - Develer S.r.l. http://www.develer.com ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
Grazie! deve girare solo su windows, con rstrip su questo : fine_pagina inizio_pagina invia_pagina menu_canali testo spa zi a to listP = tuple(open(folfderList,'r').read().rstrip('\n')) ('f', 'i', 'n', 'e', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'i', 'n', 'i', 'z', 'i', 'o', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'i', 'n', 'v', 'i', 'a', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'm', 'e', 'n', 'u', '_', 'c', 'a', 'n', 'a', 'l', 'i', '\n', 't', 'e', 's', 't', 'o', ' ', 's', 'p', 'a', ' ', 'z', 'i', ' ', 'a', ' ', 't', 'o') invece con split: listP = tuple(open(folfderList,'r').read().split('\n')) ('fine_pagina', 'inizio_pagina', 'invia_pagina', 'menu_canali', 'testo spa zi a to') Cosa ho combinato con rstrip? Ciao Lorenzo Macchiavelli web designer ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Eliminare carattere fine riga
On 24/07/12 15:27, Lorenzo Macchiavelli wrote: Grazie! deve girare solo su windows, con rstrip su questo : fine_pagina inizio_pagina invia_pagina menu_canali testo spa zi a to listP = tuple(open(folfderList,'r').read().rstrip('\n')) ('f', 'i', 'n', 'e', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'i', 'n', 'i', 'z', 'i', 'o', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'i', 'n', 'v', 'i', 'a', '_', 'p', 'a', 'g', 'i', 'n', 'a', '\n', 'm', 'e', 'n', 'u', '_', 'c', 'a', 'n', 'a', 'l', 'i', '\n', 't', 'e', 's', 't', 'o', ' ', 's', 'p', 'a', ' ', 'z', 'i', ' ', 'a', ' ', 't', 'o') invece con split: listP = tuple(open(folfderList,'r').read().split('\n')) ('fine_pagina', 'inizio_pagina', 'invia_pagina', 'menu_canali', 'testo spa zi a to') Cosa ho combinato con rstrip? Niente, il problema non è rstrip: Prova a vedere cosa succede senza il rstrip... Lorenzo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python