From sirio81 a gmail.com Wed Feb 1 10:25:07 2023 From: sirio81 a gmail.com (Valerio Pachera) Date: Wed, 1 Feb 2023 10:25:07 +0100 Subject: [Python] [python] escludere righe vuote o commentate Message-ID: Ciao a tutti, vorrei ottenere lo stesso risultato di grep -Ev '(^[[:blank:]]*$|^#)' Ho pensato a questo: p = re.compile('^\s*$|^#.*', re.MULTILINE) \s Matches any whitespace character; this is equivalent to the class [ \t\n\r\f\v]. Se provo però a sostituire le righe che matchano con una stringa vuota, non viene rimosso il new line. re.sub(p, '', mystring) -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: From sirio81 a gmail.com Wed Feb 1 11:23:28 2023 From: sirio81 a gmail.com (Valerio Pachera) Date: Wed, 1 Feb 2023 11:23:28 +0100 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: Il giorno mer 1 feb 2023 alle ore 10:25 Valerio Pachera ha scritto: > Ciao a tutti, vorrei ottenere lo stesso risultato di > > grep -Ev '(^[[:blank:]]*$|^#)' > Per ora ho usato questo approccio: with open('file.txt') as f: p = re.compile('^\s*$|^#.*') clean = [line for line in f.readlines() if not re.match(p, line)] clean è una lista con le righe "buone" del file. Notare che mantengono il \n alla fine. Per stampare quindi il contenuto mi basta fare join di una stringa vuota. print(''.join(clean)) Nel mio caso specifico voglio poi portare tutto su una singola riga. In tal caso, devo rimuovere il fine riga (usando strip) e fare il join usando uno spazio. with open('template.txt') as template_content: p = re.compile('^\s*$|^#.*') clean = [line.*strip*() for line in template_content.readlines() if not re.match(p, line)] print(' '.join(clean)) Sono comunque curioso di vedere altre implementazioni :-) -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: From marco.giusti a posteo.de Wed Feb 1 12:43:55 2023 From: marco.giusti a posteo.de (Marco Giusti) Date: Wed, 01 Feb 2023 11:43:55 +0000 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: On 01.02.2023 11:23, Valerio Pachera wrote: > Il giorno mer 1 feb 2023 alle ore 10:25 Valerio Pachera > ha scritto: > >> Ciao a tutti, vorrei ottenere lo stesso risultato di >> >> grep -Ev '(^[[:blank:]]*$|^#)' > > Per ora ho usato questo approccio: > > with open('file.txt') as f: > p = re.compile('^s*$|^#.*') > clean = [line for line in f.readlines() if not re.match(p, line)] > > clean è una lista con le righe "buone" del file. > Notare che mantengono il n alla fine. > Per stampare quindi il contenuto mi basta fare join di una stringa > vuota. > > print(''.join(clean)) > > Nel mio caso specifico voglio poi portare tutto su una singola riga. > > In tal caso, devo rimuovere il fine riga (usando strip) e fare il join > usando uno spazio. > > with open('template.txt') as template_content: > p = re.compile('^s*$|^#.*') > clean = [line.STRIP() for line in template_content.readlines() if > not re.match(p, line)] > print(' '.join(clean)) > > Sono comunque curioso di vedere altre implementazioni :-) filename = "/etc/firejail/firejail.config" clean = [] for line in open(filename): if line.strip() and not line.startswith("#"): clean.append(line) print(clean) ['browser-disable-u2f no\n', 'restricted-network yes\n'] Se questa fosse una risposta in StackOverflow, sono sicuro che qualcuno riprenderebbe la soluzione per trasformarla in una linea sola. From a a d-amo.re Fri Feb 3 14:15:10 2023 From: a a d-amo.re (Andrea D'Amore) Date: Fri, 3 Feb 2023 14:15:10 +0100 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: On Wed, 1 Feb 2023 at 12:44, Marco Giusti wrote: > for line in open(filename): > if line.strip() and not line.startswith("#"): > clean.append(line) > > print(clean) > Se questa fosse una risposta in StackOverflow, sono sicuro che qualcuno > riprenderebbe la soluzione per trasformarla in una linea sola. Dato che devi chiude il file object difficile restare su una sola istruzione. Sicuramente la logica "inizializza lista vuota e mettici la roba in maniera condizionale" la puoi riassumere con una list comprehension, considerato che la condizione in sé è semplice: with open(filename) as file: clean = [line.strip() for line in file if line.strip() and not line.startswith("#")] Per mia esperienza se la condizione diventa più articolata meglio un bel blocco for esplicito con gli if:, la list comprehension diventa rapidamente illeggibile. Oppure in maniera "più funzionale" with open(filename) as file: clean = filter(lambda x: x and not x.startswith("#"), map(lambda x: x.strip(), open(filename))) La seconda ti dà un generatore, te lo espandi con list() se ti serve ma in genere meglio ritardare il loro consumo a quando ti serve effettivamente. -- A. From sirio81 a gmail.com Sun Feb 5 12:01:29 2023 From: sirio81 a gmail.com (Valerio Pachera) Date: Sun, 5 Feb 2023 12:01:29 +0100 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: Il giorno mer 1 feb 2023 alle ore 12:43 Marco Giusti ha scritto: > for line in open(filename): > if line.strip() and not line.startswith("#"): > clean.append(line) > > Credo vada modificato così, altrimenti le righe che iniziano con degli spazi e seguire da un cancelletto vengono aggiunte alla lista: for line in open(filename): line = line.strip() if line and not line.startswith("#"): clean.append(line) -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: From marcoberi a gmail.com Sun Feb 5 12:22:50 2023 From: marcoberi a gmail.com (Marco Beri) Date: Sun, 5 Feb 2023 12:22:50 +0100 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: On Sun, 5 Feb 2023, 12:01 Valerio Pachera, wrote: > > > Il giorno mer 1 feb 2023 alle ore 12:43 Marco Giusti < > marco.giusti a posteo.de> ha scritto: > >> for line in open(filename): >> if line.strip() and not line.startswith("#"): >> clean.append(line) >> >> > Credo vada modificato così, altrimenti le righe che iniziano con degli > spazi e seguire da un cancelletto vengono aggiunte alla lista: > > for line in open(filename): > line = line.strip() > if line and not line.startswith("#"): > clean.append(line) > Non solo: così correttamente aggiungi le linee "strippate" mentre lui aggiunge le linee con gli spazi. Ciao. Marco. > -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: From a a d-amo.re Mon Feb 6 09:01:26 2023 From: a a d-amo.re (Andrea D'Amore) Date: Mon, 6 Feb 2023 09:01:26 +0100 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: On Sun, 5 Feb 2023 at 12:23, Marco Beri wrote: >> clean.append(line) > Non solo: così correttamente aggiungi le linee "strippate" mentre lui aggiunge le linee con gli spazi. In realtà no, l'obiettivo iniziale era `grep -Ev '(^[[:blank:]]*$|^#)'` quindi se ci sono caratteri stampabili purché il primo non sia cancelletto la riga va presa così com'è. -- A. From marco.giusti a posteo.de Mon Feb 6 10:43:28 2023 From: marco.giusti a posteo.de (Marco Giusti) Date: Mon, 06 Feb 2023 09:43:28 +0000 Subject: [Python] [python] escludere righe vuote o commentate In-Reply-To: References: Message-ID: <5d4976956679f02fc445e26f50e9b8fd@posteo.de> On 03.02.2023 14:15, Andrea D'Amore wrote: > > Oppure in maniera "più funzionale" > > with open(filename) as file: > clean = filter(lambda x: x and not x.startswith("#"), > map(lambda x: x.strip(), open(filename))) > > La seconda ti dà un generatore, te lo espandi con list() se ti serve > ma in genere meglio ritardare il loro consumo a quando ti serve > effettivamente. Solo una nota a proposito di questa soluzione. Se il generatore non e' consumato dentro il blocco with, diventa inusable. All'uscita dal blocco il file viene chiuso e alla prima iterazione, si cerca di leggere da un file chiuso. From germano.carella a gmail.com Mon Feb 27 18:21:13 2023 From: germano.carella a gmail.com (germano carella) Date: Mon, 27 Feb 2023 18:21:13 +0100 Subject: [Python] Come cambiare la location della cartella site-packages in un virtual environment Message-ID: <8c604058-88ed-da9f-8501-17ff475a9914@gmail.com> Salve a tutti, Sto cercando di capire se esiste la possibilità di modificare la location della cartella site-packages, in cui pip installa i pacchetti, in un ambiente virtuale creato con venv o virtualenv sotto windows. Ho cercato su internet, ma non ho avuto molta fortuna. Magari non si può proprio fare, ma voi ne sapete qualcosa? Grazie, Germano From a a d-amo.re Tue Feb 28 07:36:26 2023 From: a a d-amo.re (Andrea D'Amore) Date: Tue, 28 Feb 2023 07:36:26 +0100 Subject: [Python] Come cambiare la location della cartella site-packages in un virtual environment In-Reply-To: <8c604058-88ed-da9f-8501-17ff475a9914@gmail.com> References: <8c604058-88ed-da9f-8501-17ff475a9914@gmail.com> Message-ID: On Mon, 27 Feb 2023 at 18:21, germano carella wrote: > Sto cercando di capire se esiste la possibilità di modificare la > location della cartella site-packages, in cui pip installa i pacchetti, > in un ambiente virtuale creato con venv o virtualenv sotto windows. Qual è lo scopo effettivo? -- A.