[Python] [python] escludere righe vuote o commentate

Marco Giusti marco.giusti a posteo.de
Mer 1 Feb 2023 12:43:55 CET


On 01.02.2023 11:23, Valerio Pachera wrote:
> Il giorno mer 1 feb 2023 alle ore 10:25 Valerio Pachera
> <sirio81 a gmail.com> 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.



Maggiori informazioni sulla lista Python