Skip to main content

Regular expression: finding stuff in a txt



So, do you have something to find i a text?
Let's use regular expression for that in python.

I got this text... (saved as reg.txt)

Informazioni cronologiche Docente di sostegno Scuola di servizio Anno scolastico Data Funzioni mentali [b114 - Funzioni dell'orientamento] Funzioni mentali [b140 - funzioni dell'attenzione] Funzioni mentali [b144 - funzioni della memoria] Funzioni mentali [b163 - funzioni cognitive di base] Funzioni mentali [b164 - funzioni cognitive di livello superiore] Funzioni mentali [b167 - funzioni mentali del linguaggio] Funzioni mentali [b1720  -  Calcolo semplice] Funzioni mentali [b1721  -  Calcolo complesso] Funzioni mentali [b1800  -  Esperienza del sé] Funzioni mentali [b1802  -  Esperienza del tempo] Le performance si riferiscono al contesto: 1 [D110 Guardare P] 1 [D110 Guardare C] 1 [D115 Ascoltare P] 1 [D115 Ascoltare C] 1 [D130 copiare P] 1 [D130 copiare C] 1 [D160 - Focalizzare l'attenzione] 1 [D160 - Focalizzare l'attenzione] 1 [D1630  -  Fingere] 1 [D1630  -  Fingere] 1 [D1631  -  Speculare] 1 [D1631  -  Speculare] 1 [D1632  -  Ipotizzare] 1 [D1632  -  Ipotizzare] 1 [D166 - Leggere] 1 [D166 - Leggere] 1 [D170 - Scrivere] 1 [D170 - Scrivere] 1 [D172 - Calcolare] 1 [D172 - Calcolare] 1 [D175  - risoluzione di problemi] 1 [D175  - risoluzione di problemi] 1 [D177 - Prendere decisioni] 1 [D177 - Prendere decisioni] 1 [D210 - Intraprende un compito singolo] 1 [D210 - Intraprende un compito singolo] Componente b (parte 2) [D250 Controllare il proprio comportamento] Componente b (parte 2) [D250 Controllare il proprio comportamento] Componente b (parte 2) [D310 - Comunicare-ricevere messaggi verbali] Componente b (parte 2) [D310 -

Ok, this is a part of it... but you made an idea of it, right?

I want to extrapulate all the data between square brackets. How?

Let's try this

import re

with open("reg.txt") as file:
    text = file.read()

m = re.search('(?<=\\[)\w+', text)
print(m.group(0))
b114

We import the re module, open the file and memorize the text in text string.
Then we memorize the search in the text of a word(w+) that starts after a square \\[ and I have b114 that is nice, but I want all the words after the square and also the rest until the ] ...


I tried this

import re

with open("reg.txt") as file:
    text = file.read()

m = re.match(r"[^[]*\[([^]]*)\]", text).groups()[0]
print(m)
b114 - Funzioni dell'orientamento

Then, searching here and there in stackoverflow I foud this solution

import re

with open("reg.txt") as file:
    text = file.read()

m = re.findall(r"[^[]*\[([^]]*)\]", text)
print(m)
["b114 - Funzioni dell'orientamento", "b140 - funzioni dell'attenzione", 'b144 - funzioni della memoria', 'b163 - funzioni cognitive di base', 'b164 - funzioni cognitive di livello superiore', 'b167 - funzioni mentali del linguaggio', 'b1720  -  Calcolo semplice', 'b1721  -  Calcolo complesso', 'b1800  -  Esperienza del sé', 'b1802  -  Esperienza del tempo', 'D110 Guardare P', 'D110 Guardare C', 'D115 Ascoltare P', 'D115 Ascoltare C', 'D130 copiare P', 'D130 copiare C', "D160 - Focalizzare l'attenzione", "D160 - Focalizzare l'attenzione", 'D1630  -  Fingere', 'D1630  -  Fingere', 'D1631  -  Speculare', 'D1631  -  Speculare', 'D1632  -  Ipotizzare', 'D1632  -  Ipotizzare', 'D166 - Leggere', 'D166 - Leggere', 'D170 - Scrivere', 'D170 - Scrivere', 'D172 - Calcolare', 'D172 - Calcolare', 'D175  - risoluzione di problemi', 'D175  - risoluzione di problemi', 'D177 - Prendere decisioni', 'D177 - Prendere decisioni', 'D210 - Intraprende un compito singolo', 'D210 - Intraprende un compito singolo', 'D250 Controllare il proprio comportamento', 'D250 Controllare il proprio comportamento', 'D310 - Comunicare-ricevere messaggi verbali', 'D310 - Comunicare-ricevere messaggi verbali', 'D315 - Comunicare-ricevere messaggi non verbali', 'D315 - Comunicare-ricevere messaggi non verbali', 'D330 - Parlare', 'D330 - Parlare', 'D330 - Parlare', 'D330 - Parlare', 'D350 - Conversazione', 'D350 - Conversazione', 'D350 - Conversazione', 'D330 - Parlare', 'D350 - Conversazione', 'D350 - Conversazione', 'D430 - Sollevare e trasportare oggetti', 'D430 - Sollevare e trasportare oggetti', 'D440 - Uso fine della mano', 'D440 - Uso fine della mano', 'd450 camminare', 'd450 camminare', 'd460 - spostarsi', 'd460 - spostarsi', 'D470 - Usare un mezzo di trasporto', 'D470 - Usare un mezzo di trasporto', 'D510 - lavarsi', 'D510 - lavarsi', 'D530 - bisogni corporali', 'D530 - bisogni corporali', 'D540 - vestirsi', 'D540 - vestirsi', 'D550 - Mangiare', 'D550 - Mangiare', 'D560 - bere', 'D560 - bere', 'D571 badare alla propria sicurezza', 'D571 badare alla propria sicurezza', 'D710 interazioni interpersonali semplici', 'D710 interazioni interpersonali semplici', 'D720 interazioni interpersonali complesse', 'D720 interazioni interpersonali complesse', 'D730 entrare in relazione con gli estranei', 'D730 entrare in relazione con gli estranei', 'D740 relazioni formali', 'D740 relazioni formali', 'D750 relazioni sociali informali', 'D750 relazioni sociali informali', 'D760 Relazioni familiari', 'D760 Relazioni familiari', 'D840 Apprendistato', 'D840 Apprendistato', 'D860 - traslazioni economiche semplici', 'D860 - traslazioni economiche semplici', 'E1201 - Prodotti di assistenza per la mobilitÃ\xa0 e il trasporto', 'E1200 - Prodotti generali per la mobilitÃ\xa0 e il trasporto', 'E125  -  Prodotti e tecnologia per la comunicazione', "E130  -  Prodotti e tecnologia per l'istruzione", 'E135  -  Prodotti e tecnologia per il lavoro', 'E135  -  Prodotti e tecnologia per il lavoro', 'e310  -  Famiglia ristretta', 'e315  -  Famiglia allargata', 'e320  -  Amici', 'e410  -  Atteggiamenti dei componenti della famiglia ristretta', 'e420  -  Atteggiamenti individuali degli amici', 'e450  -  Atteggiamenti individuali di operatori sanitari', 'e455  -  Atteggiamenti di altri operatori (insegnanti)', "e515  -  Servizi, sistemi e politiche per l'architet. e la costruz.", 'e540  -  Servizi, sistemi e politiche di trasporto', 'e570  -  Servizi, sistemi e politiche previd./assist.', 'e580  -  Servizi, sistemi e politiche sanitarie', "e585  -  Servizi, sistemi e politiche dell'istruz. e della formaz.", 'e590  -  Servizi, sistemi e politiche del lavoro', 'D220  Intraprende un compito articolato', 'D220  Intraprende un compito articolato', 'D230 Esegue la routine quotidiana', 'D230 Esegue la routine quotidiana']

But, if you look well there are some strange characters into the output, so my solution is this:

import re

with open("reg.txt",encoding='utf-8') as file:
    text = file.read()

m = re.findall(r"[^[]*\[([^]]*)\]", text)
print(m)
["b114 - Funzioni dell'orientamento", "b140 - funzioni dell'attenzione", 'b144 - funzioni della memoria', 'b163 - funzioni cognitive di base', 'b164 - funzioni cognitive di livello superiore', 'b167 - funzioni mentali del linguaggio', 'b1720  -  Calcolo semplice', 'b1721  -  Calcolo complesso', 'b1800  -  Esperienza del sé', 'b1802  -  Esperienza del tempo', 'D110 Guardare P', 'D110 Guardare C', 'D115 Ascoltare P', 'D115 Ascoltare C', 'D130 copiare P', 'D130 copiare C', "D160 - Focalizzare l'attenzione", "D160 - Focalizzare l'attenzione", 'D1630  -  Fingere', 'D1630  -  Fingere', 'D1631  -  Speculare', 'D1631  -  Speculare', 'D1632  -  Ipotizzare', 'D1632  -  Ipotizzare', 'D166 - Leggere', 'D166 - Leggere', 'D170 - Scrivere', 'D170 - Scrivere', 'D172 - Calcolare', 'D172 - Calcolare', 'D175  - risoluzione di problemi', 'D175  - risoluzione di problemi', 'D177 - Prendere decisioni', 'D177 - Prendere decisioni', 'D210 - Intraprende un compito singolo', 'D210 - Intraprende un compito singolo', 'D250 Controllare il proprio comportamento', 'D250 Controllare il proprio comportamento', 'D310 - Comunicare-ricevere messaggi verbali', 'D310 - Comunicare-ricevere messaggi verbali', 'D315 - Comunicare-ricevere messaggi non verbali', 'D315 - Comunicare-ricevere messaggi non verbali', 'D330 - Parlare', 'D330 - Parlare', 'D330 - Parlare', 'D330 - Parlare', 'D350 - Conversazione', 'D350 - Conversazione', 'D350 - Conversazione', 'D330 - Parlare', 'D350 - Conversazione', 'D350 - Conversazione', 'D430 - Sollevare e trasportare oggetti', 'D430 - Sollevare e trasportare oggetti', 'D440 - Uso fine della mano', 'D440 - Uso fine della mano', 'd450 camminare', 'd450 camminare', 'd460 - spostarsi', 'd460 - spostarsi', 'D470 - Usare un mezzo di trasporto', 'D470 - Usare un mezzo di trasporto', 'D510 - lavarsi', 'D510 - lavarsi', 'D530 - bisogni corporali', 'D530 - bisogni corporali', 'D540 - vestirsi', 'D540 - vestirsi', 'D550 - Mangiare', 'D550 - Mangiare', 'D560 - bere', 'D560 - bere', 'D571 badare alla propria sicurezza', 'D571 badare alla propria sicurezza', 'D710 interazioni interpersonali semplici', 'D710 interazioni interpersonali semplici', 'D720 interazioni interpersonali complesse', 'D720 interazioni interpersonali complesse', 'D730 entrare in relazione con gli estranei', 'D730 entrare in relazione con gli estranei', 'D740 relazioni formali', 'D740 relazioni formali', 'D750 relazioni sociali informali', 'D750 relazioni sociali informali', 'D760 Relazioni familiari', 'D760 Relazioni familiari', 'D840 Apprendistato', 'D840 Apprendistato', 'D860 - traslazioni economiche semplici', 'D860 - traslazioni economiche semplici', 'E1201 - Prodotti di assistenza per la mobilità e il trasporto', 'E1200 - Prodotti generali per la mobilità e il trasporto', 'E125  -  Prodotti e tecnologia per la comunicazione', "E130  -  Prodotti e tecnologia per l'istruzione", 'E135  -  Prodotti e tecnologia per il lavoro', 'E135  -  Prodotti e tecnologia per il lavoro', 'e310  -  Famiglia ristretta', 'e315  -  Famiglia allargata', 'e320  -  Amici', 'e410  -  Atteggiamenti dei componenti della famiglia ristretta', 'e420  -  Atteggiamenti individuali degli amici', 'e450  -  Atteggiamenti individuali di operatori sanitari', 'e455  -  Atteggiamenti di altri operatori (insegnanti)', "e515  -  Servizi, sistemi e politiche per l'architet. e la costruz.", 'e540  -  Servizi, sistemi e politiche di trasporto', 'e570  -  Servizi, sistemi e politiche previd./assist.', 'e580  -  Servizi, sistemi e politiche sanitarie', "e585  -  Servizi, sistemi e politiche dell'istruz. e della formaz.", 'e590  -  Servizi, sistemi e politiche del lavoro', 'D220  Intraprende un compito articolato', 'D220  Intraprende un compito articolato', 'D230 Esegue la routine quotidiana', 'D230 Esegue la routine quotidiana']

For those of you asking, I put encoding='utf-8' inside the with open thing.




Comments

Popular posts from this blog

Widgets for Jupyter Notebook: a text input widget

Widgets for Jupyter notebook ¶ Let's import the module ipywidgets into the Jupyter Notebook from ipywidgets import widgets from ipywidgets import * from traitlets import * Now we import the display function from IPython ¶ let's attach a function to the event on_submit After we run this cell, we can go up and write something in the text widget and after you submit the text you wrote will be printed after the cell from IPython.display import display text = widgets . Text () display ( text ) def handle_submit ( sender ): print ( "Thank you for entering this text:" , text . value ) text . on_submit ( handle_submit ) Thank you for entering this text: Ciao

Image in Jupyter and PIL step by step

Hi, """ Hi, we will see a step by step tutorial about PIL and IPython.core.display modules to create images from other images and diplaying them in Jupyter notebook """ # What we will do # Create a card # 1. Take a pic of a heart # 2. Create an image blanck the size of a card 90*130 # 3. Paste the heart in the middle # 4. show the card """ As first step wi will simply display an image on the notebook. I will show two way to display the image with 'display' from IPhyton a. Using the open method of PIL.Image (named Img) b. Using the Image method from the IPython.core.display module """ # 1. Take the pic of a heart from IPython.core.display import Image , display from PIL import Image as Img heart = 'img/heart.png' display ( Image ( heart )) display ( Img . open ( heart )) # 2. Create an image blanck the size of a card 90*130 # 3. Paste the heart in the middle #...

Let's draw a circle with PIL in Python

Let's continue making our coding around PIL. Let's start with some basic drawing: a circle from PIL import Image , ImageDraw img = Image . new ( "RGB" ,( 60 , 60 ), 'white' ) dr = ImageDraw . Draw ( img ) dr . ellipse (( 0 , 0 , 60 , 60 ), 'yellow' ) img . show () this is the image produced *If you use jupyter notebook, just write img at the end to see the output.