I want to grab the body text of the article which is in p class with subtitles that is in span class but I'm not sure how can I join them(both body text and subtitles). I have joined the body text but subtitles are missing. Im using python and beautiful soup
This is the sample link
Here is how I join the text
response = urllib.request.urlopen(link)
respone_html = response.read().decode()
parsed_html = BeautifulSoup(respone_html, 'html.parser')
page_text = ''
if parsed_html.findAll('div', attrs={'class' : 'articulo-contenido'}) is not None:
texts = parsed_html.findAll('div', attrs={'class' : 'articulo-contenido'})
for text in texts:
textbody = text.findAll('p',attrs={'class' : 'contenido'})
textsubtitle = text.findAll('span',attrs={'class' : 'articulo-subtitulo'})
for p in textbody:
page_text += '\n' + ''.join(p.findAll(text = True))
The output Im getting is the only body text like this
Stephanie Grisham, quien trabajó durante cinco años en diferentes
roles como asesora principal de Donald y Melania Trump, cuenta sus
memorias de aquella época en su libro 'I'll Take Your Questions Now'
(responderé sus preguntas ahora).(Puede leer: EE. UU. teme una
'subversión electoral' con Trump coqueteando con volver). El relato se
publicará el próximo martes, 5 de octubre. Sin embargo, 'CNN' obtuvo
una copia anticipada y reveló algunas descripciones que realiza
Grisham acerca de Melania Trump, quien, para muchos, es la primera
dama más reservada de la historia política estadounidense moderna.
Cabe resaltar que Grisham trabajó como directora de comunicaciones y
jefa de personal de la exprimera dama, por lo que sabe varios de sus
detalles más íntimos.De hecho, 'The Washington Post' se comunicó con
la oficina de Melania Trump para preguntar sobre el libro, la cual
afirmó lo siguiente en una declaración: "La intención detrás de este
libro es obvia. Es un intento de redimirse después de un mal desempeño
como secretaria de prensa, relaciones personales fallidas y
comportamiento poco profesional en la Casa Blanca. A través de la
falsedad y la traición busca ganar relevancia y dinero a expensas de
la señora Trump".(Lea también: Trump tuvo un asistente llamado 'el
hombre de la música' para calmar su ira).Ahora bien, a continuación
podrá saber cinco cosas que se exponen el libro de Grisham sobre la
exprimera dama: Aunque cuando vivía en la Casa Blanca Melania no era
muy expresiva en cuanto a los comentarios que hacían sobre ella,
Grisham comenta que la esposa del expresidente solía leer lo que la
prensa escribía sobre ella. "Como su esposo y todos sus hijos, la Sra.
Trump escudriñó sus recortes de prensa como un arquitecto experto que
se enfoca en planos. No se le pasó por alto ningún detalle, no pasó
nada por alto. Tenía las alertas de Google configuradas para ella y lo
vio todo", escribió la autora del libro.(De interés: Trump demanda a
su sobrina y al NY Times por investigación sobre finanzas). Grisham
comentó que Melania no pasaba mucho tiempo en la espaciosa 'suite' que
se le asignó, sino que solía trabajar desde su casa, mucho antes de
que el covid-19 estuviera presente. Incluso, el Servicio Secreto la
llamaba 'Rapunzel' porque permanecía "en su torre"."Teníamos reuniones
en persona, pero por lo general se llevaban a cabo en la sala de mapas
frente a los ascensores a la residencia. Allí planificaríamos los
horarios, responderíamos a consultas urgentes y discutiríamos los
objetivos", afirmó Grisham.La autora dijo, adicionalmente, que la
exprimera dama dedicaba mucho tiempo a su cuidado personal: "Ella
creía que la relajación era fundamental para el régimen de belleza de
uno, al igual que, por supuesto, los tratamientos de spa y
faciales".(Además: Donald Trump quiso pintar su avión para que se
pareciera al presidencial). De acuerdo con Grisham, había tensión
entre la esposa y la hija de Donald Trump porque Ivanka, quien era
llamada por su madrastra como 'la princesa', tenía el deseo de ser el
centro de atención en los eventos públicos y viajes.Según el escrito
de la exasesora, Melania era una estudiante de protocolo y solía ser
muy rigurosa en cuanto a respetar las tradiciones de los países que
son reservadas solo para un presidente y su cónyuge, no para la hija
del mandatario y su esposo. Cuando en 2018 se divulgaron las
acusaciones de infidelidad de Donald Trump con la actriz porno Stormy
Daniels y la exmodelo de 'Playboy' Karen MacDougal, se dice que
Melania tomó una caravana separada para llegar al discurso del Estado
de la Unión de ese año. Sin embargo, esta información no se
confirmó.No obstante, Grisham dijo que la mujer sí estaba enojada con
su esposo y no quiso exponerse públicamente junto a él."Sentí que la
señora Trump estaba avergonzada, y que quería que él también se
sintiera avergonzado. No sé si él es capaz de eso o no", escribió
Grisham.(Le recomendamos: Capitolio de EE. UU., en alerta por
manifestación de partidarios de Trump). En 2018, la exprimera dama
apareció con una chaqueta verde que decía en la espalda 'Realmente no
me importa. ¿A ti?', durante una visita a un centro de detención de
Texas. Según cuenta la exasesora, posiblemente Melania no sabía las
críticas que iba a recibir por el mensaje de la chaqueta justo cuando
acudía a una causa preocupante para el país en ese momento.Grisham
aseguró, además, que el entonces presidente Donald Trump parecía
molesto por la situación y miro a su esposa para decirle: "¿Qué
diablos estabas pensando?". (Siga leyendo: General de EE.UU. alertó a
China sobre la salud mental de Trump, dice libro).ELTIEMPO.COM
but it should have headings like
Stephanie Grisham, quien trabajó durante cinco años en diferentes roles como asesora principal de Donald y Melania Trump, cuenta sus memorias de aquella época en su libro 'I'll Take Your Questions Now' (responderé sus preguntas ahora).(Puede leer: EE. UU. teme una 'subversión electoral' con Trump coqueteando con volver).
El relato se publicará el próximo martes, 5 de octubre. Sin embargo, 'CNN' obtuvo una copia anticipada y reveló algunas descripciones que realiza Grisham acerca de Melania Trump, quien, para muchos, es la primera dama más reservada de la historia política estadounidense moderna. Cabe resaltar que Grisham trabajó como directora de comunicaciones y jefa de personal de la exprimera dama, por lo que sabe varios de sus detalles más íntimos.De hecho, 'The Washington Post' se comunicó con la oficina de Melania Trump para preguntar sobre el libro, la cual afirmó lo siguiente en una declaración: "La intención detrás de este libro es obvia. Es un intento de redimirse después de un mal desempeño como secretaria de prensa, relaciones personales fallidas y comportamiento poco profesional en la Casa Blanca. A través de la falsedad y la traición busca ganar relevancia y dinero a expensas de la señora Trump".(Lea también: Trump tuvo un asistente llamado 'el hombre de la música' para calmar su ira).Ahora bien, a continuación podrá saber cinco cosas que se exponen el libro de Grisham sobre la exprimera dama:
Leía su propia prensa
Aunque cuando vivía en la Casa Blanca Melania no era muy expresiva en cuanto a los comentarios que hacían sobre ella, Grisham comenta que la esposa del expresidente solía leer lo que la prensa escribía sobre ella. "Como su esposo y todos sus hijos, la Sra. Trump escudriñó sus recortes de prensa como un arquitecto experto que se enfoca en planos. No se le pasó por alto ningún detalle, no pasó nada por alto. Tenía las alertas de Google configuradas para ella y lo vio todo", escribió la autora del libro.(De interés: Trump demanda a su sobrina y al NY Times por investigación sobre finanzas).
Estaba fuera de su oficina
Grisham comentó que Melania no pasaba mucho tiempo en la espaciosa 'suite' que se le asignó, sino que solía trabajar desde su casa, mucho antes de que el covid-19 estuviera presente. Incluso, el Servicio Secreto la llamaba 'Rapunzel' porque permanecía "en su torre"."Teníamos reuniones en persona, pero por lo general se llevaban a cabo en la sala de mapas frente a los ascensores a la residencia. Allí planificaríamos los horarios, responderíamos a consultas urgentes y discutiríamos los objetivos", afirmó Grisham.La autora dijo, adicionalmente, que la exprimera dama dedicaba mucho tiempo a su cuidado personal: "Ella creía que la relajación era fundamental para el régimen de belleza de uno, al igual que, por supuesto, los tratamientos de spa y faciales".(Además: Donald Trump quiso pintar su avión para que se pareciera al presidencial).
La relación entre Melania e Ivanka Trump
De acuerdo con Grisham, había tensión entre la esposa y la hija de Donald Trump porque Ivanka, quien era llamada por su madrastra como 'la princesa', tenía el deseo de ser el centro de atención en los eventos públicos y viajes.Según el escrito de la exasesora, Melania era una estudiante de protocolo y solía ser muy rigurosa en cuanto a respetar las tradiciones de los países que son reservadas solo para un presidente y su cónyuge, no para la hija del mandatario y su esposo.
Rumores de infidelidad
Cuando en 2018 se divulgaron las acusaciones de infidelidad de Donald Trump con la actriz porno Stormy Daniels y la exmodelo de 'Playboy' Karen MacDougal, se dice que Melania tomó una caravana separada para llegar al discurso del Estado de la Unión de ese año. Sin embargo, esta información no se confirmó.No obstante, Grisham dijo que la mujer sí estaba enojada con su esposo y no quiso exponerse públicamente junto a él."Sentí que la señora Trump estaba avergonzada, y que quería que él también se sintiera avergonzado. No sé si él es capaz de eso o no", escribió Grisham.(Le recomendamos: Capitolio de EE. UU., en alerta por manifestación de partidarios de Trump).
Melania y la chaqueta
En 2018, la exprimera dama apareció con una chaqueta verde que decía en la espalda 'Realmente no me importa. ¿A ti?', durante una visita a un centro de detención de Texas. Según cuenta la exasesora, posiblemente Melania no sabía las críticas que iba a recibir por el mensaje de la chaqueta justo cuando acudía a una causa preocupante para el país en ese momento.Grisham aseguró, además, que el entonces presidente Donald Trump parecía molesto por la situación y miro a su esposa para decirle: "¿Qué diablos estabas pensando?".
(Siga leyendo: General de EE.UU. alertó a China sobre la salud mental de Trump, dice libro).ELTIEMPO.COM
this should work
text = parsed_html.find('div', attrs={'class' : 'articulo-contenido'}).div
for child in text.children:
if not child.name:
continue
elif child.name=='p' and 'contenido' in child.attrs['class']:
page_text += '\n' + child.text
elif child.name=='span' and 'articulo-subtitulo' in child.attrs['class']:
page_text += '\n\n' + child.text
print(page_text)
if you catch your elements by chunks (catch all subtitles, catch all paragraphs), you won't be able to put them back into their flow. "go with the flow"
Related
I'm web scraping to get information about articles from a website, for that text I want to save the header of the text and the description as key and value in a dictionary.
When I run the code, I get an error unhashable type: 'list'. What I can do to fix this?
This is all the code:
import requests
import bs4
from bs4 import BeautifulSoup
import smtplib
import os
bodyDict = dict()
newslist = list()
body = "NEWS:\n"
web = requests.get("http://www.infobolsa.es/news")
soup = bs4.BeautifulSoup(web.text, 'lxml')
for item in soup.find_all("article"):
newslist.append(item.text.split("\n"))
for row in newslist:
bodyDict[newslist[1]]=newslist[3]
print(bodyDict)
This can be achieved using the code below. We need to get the header (in <h3> tags) and the value (in the last <p>) tag for each <article> tag in the page. I've assumed that you want to ignore header tags that have the class 'video'.
import requests
import bs4
bodyDict = dict()
web = requests.get("http://www.infobolsa.es/news")
soup = bs4.BeautifulSoup(web.text, 'lxml')
for item in soup.find_all("article"):
# Find the header
header = item.find('h3')
# Ignore headers that are videos
if 'video' in header.get('class', []):
continue
# Get the value of the last p tag
value = item.find_all('p')[-1].text
# Append to dictionary
bodyDict[header.text] = value
Which gives us:
{'PharmaMar recibe 200 millones de dólares como pago inicial del acuerdo firmado con Jazz': 'PharmaMar y Jazz firmaron el pasado 19 de diciembre de 2019 un acuerdo de licencia en exclusiva para la comercialización de lurbinectedina en Estados Unidos.\xa0PharmaMar también podrá recibir hasta 800 millones de dólares adicionales en potenciales pagos por hitos, además de los royalties sobre las ventas netas.',
'El Ibex 35, el índice con mayor fortaleza de Europa hoy': 'Los índices europeos y sus futuros, futuro del Dax y futuro del Euro Stoxx 50, a media mañana están con subidas, pero han perdido el rumbo y están a la espera de lo que pueda hacer el futuro del SP500 que les sirva de\xa0 guía para tomar una dirección. El Ibex 35 es el más destacado gracias a que el Banco Santander lidera las subidas (+3,68%).',
'Eurostoxx 50: primer objetivo 3.730 puntos': 'Ángel Cotera, especialista de mercados de BBVA Trader analiza desde un punto de vista técnico el Eurostoxx 50.',
'Grenergy tiene la confianza de Caixabank y su recomendación de compra': 'Los analistas otorgan un precio objetivo\xa0de 18,65 euros la compañía de renovables, lo que supone un recorrido alcista del 21,10% para los títulos de la\xa0compañía de energías renovables en el Mercado Continuo.',
'UBS eleva la recomendación de Bankinter en un momento correctivo en bolsa': 'El organismo cree que con el mínimo histórico al que cotizan actualmente la acciones cualquier riesgo está "mejor reflejado". Sube su recomendación hasta neutral.',
'La FED afronta su primera reunión del año sin la presión de los mercados ni de Trump': 'Juan Ramón Casanovas, Head of Private Portfolio Management, Bank Degroof Petercam Spain valora las opciones que tiene Jerome Powell en la primera reunión de la FED del año.',
'PharmaMar tendrá en China la tecnología para detectar el coronavirus en 6 semanas': 'La biotecnológica española cuenta con la tecnología para detectar el virus y está trabajando para adaptar las máquinas\xa0de diagnóstico de Genomica con las que cuenta en Wuhan.',
'Airbus provisiona 3.600 millones para pagar posibles sanciones por corrupción': 'Airbus ha provisionado\xa03.600 millones de euros\xa0para el pago de posibles sanciones a las autoridades francesas, británicas y estadounidenses. Las investigaciones emprendidas por dichas autoridades conciernen a acusaciones de soborno y de corrupción así como a imprecisiones en declaraciones hechas a las autoridades de los Estados Unidos de acuerdo con el International Traffic in Arms Regulations (ITAR).',
'Logista aumenta su beneficio un 3,3% hasta los 37,2 millones': 'El distribuidor de productos minoristas Logista alcanzó un beneficio neto en su\xa0primer trimestre fiscal\xa0del año (octubre-diciembre) de 37,2 millones de euros, lo que supone un aumento del 3,3%.',
'Santander solo aspira a rebotes a corto plazo': 'Santander continúa inmerso en una clara tendencia bajista de largo plazo que permanece vigente mientras el precio no consiga superar 3,9395 / 3,8655. Si el precio consigue respetar los mínimos del año pasado y el volumen aumenta se avanzaría en la construcción de un suelo. \xa0',
'Banco Santander lleva al Ibex 35 por encima de los 9.500 puntos': 'El Ibex 35 arranca la sesión con subidas del 0,49% que le llevan a los 9.532 puntos. Subidas que lideran los títulos de Banco\xa0 Santander que, tras la publicación de sus resultados, ha llegado a subir más de un 3% en la apertura.',
'El mayor banco de Canadá sobrepondera ahora las acciones de Repsol': 'Los analistas de\xa0Royal Bank of Canada (RBC) han elevado este miércoles\xa0la recomendación de Repsol de "infraponderar" hasta\xa0"sobreponderar", ya que según el mayor banco canadiense\xa0la petrolera española ha empezado a mostrar una mejor relación riesgo-rentabilidad que la mayoría de sus\xa0competidoras.',
'Las bolsas europeas abren con tono mixto pendientes de China y la FED': 'Los índices de las principales bolsas europeas comienzan la sesión con tono mxixto. El DAX sube un 0,04%, hasta los 13.328 puntos; el FTSE -100 arranca la sesión con subidas del 0,13%, hasta los 7.491 puntos. El CAC-40 abre en los 5.926 pntos mientras que el Eurostoxx 50 abre en los 3.722 puntos tras avanzar ligeramente. El FTSE MiB en negativo sobre los 24.024 puntos. Hoy toda la atención sobre China y la primera reunión del año de la FED.',
'Banco Santander reduce un 17% su beneficio en 2019, hasta los 6.515 millones': 'Banco Santander ha anunciado una reducción del 17% en su beneficio atribuido en 2019, hasta los 6.515 millones. Y eso a pesar de que en el cuarto trimestre la entidad incrementó en un 35% su beneficio logrando así el mayor beneficio atribuido de la historia, en los 2.783 millones. La compañía propone aumentar el dividendo en efecto.',
'MAB: ventajas de las empresas al cotizar en Bolsa': 'Las pymes son actrices protagonistas de la economía española. Sólo alguien que no sepa de economía las consideraría actrices de reparto, ya que emplean al 80% de nuestra fuerza laboral y representan el 65% de nuestro PIB. Cuando necesitan financiación, visibilidad, liquidez, y el resto de ventajas que conlleva cotizar, disponen de una plataforma hecha a su medida: el Mercado Alternativo Bursátil (MaB). Sus integrantes volverían a dar el salto sin dudarlo, pero se quejan de que le siguen faltando tamaño y, por ende, liquidez.',
'Tesla sigue alcista tras superar en Bolsa a Volkswagen': '\xa0',
'"Los sectores más atractivos y que más nos gustan son los más caros: tecnología y salud"': 'Hablamos de los mercados con Josep Bayarri, director de productos, análisis e inversiones de Arquia Banca.\xa0',
'"Creemos que es más fácil, en un año como este, invertir en pequeñas y medianas compañías"': 'Hablamos de los mercados y para ello contamos con la presencia de Álvaro de Liniers, responsable de desarrollo de negocio de Groupama AM para España.',
'Reunión de la Fed y resultados de Logista y Santander, en la agenda del día': 'Este miércoles los inversores y analistas estarán muy pendientes del índice de confianza del consumidor Gfk, decisión de tipos de interés de la Fed, variación de ventas de viviendas pendientes y conferencia de prensa de la\xa0Comité Federal del Mercado Abierto de la Reserva Federal.'}
I have a web-scraping code using Selenium-python and realized I don't need to run any javascript so for efficiency purposes I'm "translating" it to urllib.requests and BeautifulSoup. I've got and issue trying to mimic the work done by the ".text" attribute of selenium when reading the tables. BeautifulSoup doesn't seem to have such simple way to read tables. When trying to search in Selenium module how the ".text" attribute is coded I figured I don't know how to look up for such information. Can anyone help me to figure this information. Where is explained how this atribute is retrieved from html?
Example_url = "http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario="
When I do try with Selenium:
driver.get(Example_url)
driver.find_element_by_xpath('//*[#id="content"]/form/table/tbody').text
I get the desired result (sample)
" As informações aqui contidas não produzem efeitos legais.\nSomente a publicação no DJERJ oficializa despachos e decisões e estabelece prazos.\n\nProcesso No 0000184-70.2008.8.19.0001\n2008.001.000272-2\n TJ/RJ - 16/11/2018 06:50:45\n ARQUIVADO EM DEFINITIVO - MAÇO Nº 1706, em 02/07/2012\n Comarca da Capital 11ª Vara Criminal\nCartório da 11ª Vara Criminal\n Endereço: Av. Erasmo Braga 115 L II sala 504 \nBairro: Centro\nCidade: Rio de Janeiro\n Ofício de Registro: 3º Ofício de Registro de Distribuição\nAssunto: Furto (Art. 155 - CP) C/C Crime Tentado, II\n Classe: Ação Penal - Procedimento Ordinário\n Autor MINISTERIO PUBLICO DO ESTADO DO RIO DE JANEIRO\n Listar alterações / exclusões de personagens\n Advogado(s): TJ000002 - DEFENSOR PÚBLICO\n Tipo do Movimento: Arquivamento\nData de arquivamento: 02/07/2012\nTipo de arquivamento: definitivo\nMaço: 1706\nMaço recebido pelo arquivo em: 09/07/2012\nLocal de arquivamento: Arquivo Geral - Rio de Janeiro\n Tipo do Movimento: Revogação da Suspensão do Processo (Art. 89 da Lei 9099)\nData do movimento: 01/07/2012\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 06/02/2012\nDescrição: Ag. expedição de ofício de baixa. Ofício eletrônico nº 206539271 ao 3º ORD em 14/02/2012., devidamente cumprido em 18/06/2012. Processo para arquivar.\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 17/01/2012\nDescrição: devolvido da digitação\n Tipo do Movimento: Digitação de Documentos\nData da digitação: 17/01/2012\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 06/01/2012\nDescrição: Para fazer comunicações de praxe.\n Tipo do Movimento: Ato Ordinatório Praticado\nData: 06/01/2012\nDescrição: Certifico que a r. sentença de fls. 111/112, transitou em julgado para as partes em 04/11/2011."...(it continues..)
Assuming javascript doesn't need to run. I will test during hours you indicate.
I would probably try pandas first to retrieve table
import pandas as pd
result = pd.read_html("http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario=")
print(result[0].dropna()) # <== or choose appropriate index
Otherwise, CSS selector to target the table using requests.
import requests
from bs4 import BeautifulSoup
url = 'http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario='
res = requests.get(url,headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(res.content, 'lxml')
print(soup.select_one('#content table').text)
in my place it ask Captcha, after I solve it in browser then I run document.cookie in Console to get the cookie.
import requests, re
from bs4 import BeautifulSoup
# simple table formatter
def cleanTable(table):
table = '\n'.join([x.strip() for x in table.split('\n')])
table = re.sub(r'(.)[\r\n](.)', r'\1 \2', table)
table = re.sub(r'[\r\n]{2,}', '\n', table)
return table.strip()
heads = {'Cookie' : 'JSESSIONID=0afafa3330d816c755a5df3c478cb6388d1b52b9dc5e.e34NbhiLbN0NbO0Lc30PaNaQbN0Me0;'}
Example_url = 'http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario='
html = requests.get(Example_url, headers=heads)
soup = BeautifulSoup(html.text, 'html.parser')
table = soup.find('table').text
# Python 2.7
# table = soup.find('table').text.encode('utf-8')
print(cleanTable(table))
A few words about the solution:
The website http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario=%22 uses JavaScript. So urllib.requests and BeautifulSoup alone may not help us.
A better approach will be to use Selenium to initiate the session and induce WebDriverWait for the desired element to be visible.
Next you can use BeautifulSoup to read the tables.
The equivalent of .text in BeautifulSoup is getText()
To achieve your goal, you can use the following solution.
Code Block:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup as soup
my_url = 'http://www4.tjrj.jus.br/consultaProcessoWebV2/consultaMov.do?v=2&numProcesso=2008.001.000272-2&acessoIP=internet&tipoUsuario='
driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get(my_url)
WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "form[name='formResultado']")))
page_soup = soup(driver.page_source, "html.parser")
container = page_soup.find("form",{"name":"formResultado"})
content = container.getText()
print(content)
Console Output:
As informações aqui contidas não produzem
efeitos legais.
Somente a publicação no DJERJ oficializa
despachos e decisões e estabelece prazos.
Processo No
0000184-70.2008.8.19.0001
2008.001.000272-2
TJ/RJ -
07/12/2018 13:26:09
ARQUIVADO EM DEFINITIVO - MAÇO Nº 1706, em 02/07/2012
Comarca da Capital
11ª Vara Criminal
Cartório da 11ª Vara Criminal
Endereço:
Av. Erasmo Braga
115
L II sala 504
Bairro:
Centro
Cidade:
Rio de Janeiro
Ofício de Registro:
3º Ofício de Registro de Distribuição
Assunto:
Furto (Art. 155 - CP) C/C Crime Tentado, II
Classe:
Ação Penal - Procedimento Ordinário
Autor
MINISTERIO PUBLICO DO ESTADO DO RIO DE JANEIRO
Listar alterações / exclusões de personagens
TIPO
PERSONAGEM
Acusado
FABRÍCIO XAVIER LIMA
Imprimir
Fechar
Advogado(s):
TJ000002
-
DEFENSOR PÚBLICO
Tipo do Movimento:
Arquivamento
Data de arquivamento:
02/07/2012
Tipo de arquivamento:
definitivo
Maço:
1706
Maço recebido pelo arquivo em:
09/07/2012
Local de arquivamento:
Arquivo Geral - Rio de Janeiro
Tipo do Movimento:
Revogação da Suspensão do Processo (Art. 89 da Lei 9099)
Data do movimento:
01/07/2012
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
06/02/2012
Descrição:
Ag. expedição de ofício de baixa. Ofício eletrônico nº 206539271 ao 3º ORD em 14/02/2012., devidamente cumprido em 18/06/2012. Processo para arquivar.
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
17/01/2012
Descrição:
devolvido da digitação
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
17/01/2012
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
06/01/2012
Descrição:
Para fazer comunicações de praxe.
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
06/01/2012
Descrição:
Certifico que a r. sentença de fls. 111/112, transitou em julgado para as partes em 04/11/2011.
Tipo do Movimento:
Trânsito em Julgado MP
Data:
04/11/2011
Autor:
MINISTERIO PUBLICO DO ESTADO DO RIO DE JANEIRO
Tipo do Movimento:
Recebimento
Data de Recebimento:
27/10/2011
Tipo do Movimento:
Sentença - Julgado improcedente o pedido
Data Sentença:
27/10/2011
Descrição:
...Ante o exposto, JULGO IMPROCEDENTE o pedido para ABSOLVER FABRICIO XAVIER LIMA, com fulcro no artigo 386, III, do CPP...
Ver íntegra do(a) Sentença
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
27/10/2011
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Sentença em Audiência - Julgado improcedente o pedido
Juiz:
ALCIDES DA FONSECA NETO
Data da sentença:
27/10/2011
Descrição:
No dia 27 de outubro do ano de dois mil e onze, às 13h30min, na sala de audiências da 11ª Vara Criminal, na presença do Doutor Alcides da Fonseca Neto, Juiz de Direito, do Dr. Carlos Gilberto Magalhães, Promotor de Justi...
Ver íntegra do(a) Sentença
Tipo do Movimento:
Audiência Instrução e Julgamento
Data da audiência:
27/10/2011
Resultado:
Realizada - sentença em audiência
Descrição:
No dia 27 de outubro do ano de dois mil e onze, às 13h30min, na sala de audiências da 11ª Vara Criminal, na presença do Doutor Alcides da Fonseca Neto, Juiz de Direito, do Dr. Carlos Gilberto Magalhães, Promotor de Justi...
Ver íntegra do(a) Audiência Instrução e Julgamento
Tipo do Movimento:
Juntada de Mandado
Data da juntada:
13/10/2011
Número do Documento:
1852/2011/MND
Resultado:
Positivo
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
10/10/2011
Tipo do Movimento:
Remessa
Destinatário:
Defensor Público
Data da remessa:
06/10/2011
Prazo:
15 dia(s)
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
05/10/2011
Descrição:
Nesta data, faço vista dos presentes autos à Defensoria Pública.
Tipo do Movimento:
Juntada de Mandado
Data da juntada:
05/10/2011
Número do Documento:
1853/2011/MND
Resultado:
Positivo
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
05/10/2011
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
05/10/2011
Prazo:
15 dia(s)
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
04/10/2011
Descrição:
Certifico em relação à FAC acostada às fls. 95/96, o que segue:
ANOTAÇÃO 1 DE2 - Refere-se ao processo 0043642-02.2003.8.19.0038 do 1º. JECRIM de N. Iguaçu, no qual foi determinado em 27/09/05 o declínio de competência em favor de uma das varas criminais. Processo baixado em 11/11/05, redistribuído à 7ª V.Criminal onde foi rejeitada à denúncia com fulcro nos arts. 43, II, e 61 do C.P.P. e em sua decorrência n/f dos rts. 107, IV, e 115 do C.P., sendo DECLARADA EXTINTA A PUNIBILIDADE dos fatos apurados neste procedimento, pela ocorrência do fenômeno da prescrição, por sentença datada 25/01/06 e transitada em 20/03/06. Arquivado com baixa em 15/05/06.
ANOTAÇÃO 2 DE 2 - ESTES.
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
13/09/2011
Descrição:
Certifico em relação ao despacho de fls. 88, o que se segue:
- O acusado foi requisitado, conforme fl. 88;
- As intimações e requisições necessárias foram expedidas, conforme fls. 97/99; FAC (fls. 95/96), ESCLARECIDA (fl. 100);
- As diligências requeridas pelo MP foram totalmente cumpridas;
- As testemunhas foram devidamente cadastradas no sistema "DCP".
Tipo do Movimento:
Digitação de Carta Precatória
Data da expedição:
08/09/2011
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
08/09/2011
Tipo do Movimento:
Recebimento
Data de Recebimento:
26/07/2011
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
22/07/2011
Descrição:
...Assim, com fulcro no artigo 399 da Lei Processual Penal, designo o dia 27/10/2011, às 13horas, para Audiência de Instrução e Julgamento, oportunidade na qual serão tomados os depoimentos das testemunhas arroladas pelo...
Ver íntegra do(a) Despacho
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
18/07/2011
Juiz:
SIMONE DE FARIA FERRAZ
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
11/07/2011
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
08/07/2011
Prazo:
15 dia(s)
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
07/07/2011
Descrição:
DEVOLVIDO DA DIGITAÇÃO
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
07/07/2011
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
22/06/2011
Tipo do Movimento:
Remessa
Destinatário:
Defensor Público
Data da remessa:
22/06/2011
Prazo:
15 dia(s)
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
21/06/2011
Descrição:
DILIGENCIAS
Tipo do Movimento:
Recebimento
Data de Recebimento:
20/06/2011
Tipo do Movimento:
Decisão - Revogação da Suspensão do Processo
Data Decisão:
16/06/2011
Descrição:
Assim, diante do exposto, REVOGO A DECISÃO QUE SUSPENDEU O PROCESSO e DEIXO DE DECLARAR A EXTINÇÃO DA PUNIBILIDADE DO RÉU.
O réu foi devidamente citado(fls.42/43).
Portando, remetam-se os autos ao ilustre Defensor ...
Ver íntegra do(a) Decisão
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
16/06/2011
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
07/06/2011
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
07/06/2011
Prazo:
15 dia(s)
Tipo do Movimento:
Recebimento
Data de Recebimento:
03/06/2011
Tipo do Movimento:
Despacho - Despacho
Data Despacho:
02/06/2011
Descrição:
Dê-se vista ao Ministério Público. Após, venham conclusos.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
02/06/2011
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebimento
Data de Recebimento:
20/12/2010
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
17/12/2010
Descrição:
Cobre-se a carta precatória de fls.79, devidamente cumprida. Após, venham os autos conclusos.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
13/12/2010
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Despacho em Audiência - Proferido despacho de mero expediente
Juiz:
RODRIGO JOSE MEANO BRITO
Data do despacho:
03/12/2010
Descrição:
No dia 03 de dezembro do ano de dois mil e dez, às 14h32min, na sala de audiências da 11ª Vara Criminal, na presença do Doutor Alcides da Fonseca Neto, Juiz de Direito, do Dr. Celso de Andrade Loureiro, Promotor de Justi...
Ver íntegra do(a) Despacho
Tipo do Movimento:
Audiência Especial
Data da audiência:
03/12/2010
Resultado:
Realizada - Despacho em audiência
Descrição:
No dia 03 de dezembro do ano de dois mil e dez, às 14h32min, na sala de audiências da 11ª Vara Criminal, na presença do Doutor Alcides da Fonseca Neto, Juiz de Direito, do Dr. Celso de Andrade Loureiro, Promotor de Justi...
Ver íntegra do(a) Audiência Especial
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
20/10/2010
Tipo do Movimento:
Remessa
Destinatário:
Defensor Público
Data da remessa:
20/10/2010
Prazo:
15 dia(s)
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
19/10/2010
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
19/10/2010
Prazo:
15 dia(s)
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
18/10/2010
Tipo do Movimento:
Recebimento
Data de Recebimento:
13/10/2010
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
27/09/2010
Descrição:
Face à certidão, expeça-se carta precatória p/intimação do acusado para participar da audiência neste Juízo. Urgente!!!
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
24/09/2010
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebimento
Data de Recebimento:
25/08/2010
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
24/08/2010
Descrição:
Designo para o dia 03/12/2010, às 14h30min, para realização da Audiência de advertência, nos exatos termos da promoção do Ministério Público.
Intime-se o acusado.
Ciência ao Ministério Público e à Drª. Defensora Públic...
Ver íntegra do(a) Despacho
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
23/08/2010
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
17/08/2010
Descrição:
remessa cls
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
23/07/2010
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
23/07/2010
Prazo:
15 dia(s)
Tipo do Movimento:
Recebimento
Data de Recebimento:
06/07/2010
Tipo do Movimento:
Despacho - Despacho
Data Despacho:
30/06/2010
Descrição:
Dê-se vista ao Ministério Público.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
14/06/2010
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
10/06/2010
Tipo do Movimento:
Remessa
Destinatário:
Defensor Público
Data da remessa:
09/06/2010
Prazo:
15 dia(s)
Tipo do Movimento:
Recebimento
Data de Recebimento:
03/05/2010
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
30/04/2010
Descrição:
Dê-se vista a Drª.Defensora Pública. Após, à conlusão.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
30/04/2010
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
19/01/2010
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
15/01/2010
Prazo:
15 dia(s)
Tipo do Movimento:
Recebimento
Data de Recebimento:
18/11/2009
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
18/11/2009
Descrição:
Dê-se vista ao Ministério Público.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
18/11/2009
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
30/09/2009
Tipo do Movimento:
Digitação de Carta Precatória
Data da expedição:
22/07/2009
Tipo do Movimento:
Recebimento
Data de Recebimento:
27/05/2009
Tipo do Movimento:
Despacho - Proferido despacho de mero expediente
Data Despacho:
27/05/2009
Descrição:
Intime-se o acusado para comparecer em cartório, no prazo de cinco dias, a fim de justificar o não cumprimento assumido na assentada de fls.39, sob pena de revogação do benefício concedido e prosseguimento do feito.
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
14/05/2009
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
03/09/2008
Descrição:
PROCESSO INVENTARIADO EM 03/09/08
Tipo do Movimento:
Suspensão do Processo (Art. 89 da Lei 9099)
Data do movimento:
18/02/2008
Tipo do Movimento:
Juntada de Mandado
Data da juntada:
18/02/2008
Número do Documento:
137/2008/MND
Resultado:
Positivo
Número do Documento:
9/2008/ALVS
Resultado:
Positivo
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
30/01/2008
Tipo do Movimento:
Ato Ordinatório Praticado
Data:
30/01/2008
Descrição:
Of. para o IFP informando a suspensão
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
29/01/2008
Descrição:
O acusado Fabrício foi posto em liberdade atráves do ALVS 9/2008 de 29/01/2008, na mesma data.
Tipo do Movimento:
Audiência Interrogatório
Data da audiência:
29/01/2008
Resultado:
Realizada - Suspensão do Processo
Descrição:
Aberta a audiência, pediu a palavra o Dr. Promotor de Justiça, para propor a suspensão do processo, o que foi aceito pelo acusado e pela sua ilustre Defensora. A seguir, o MM. Dr. Juiz, proferiu a seguinte decisão. Ante...
Ver íntegra do(a) Audiência Interrogatório
Tipo do Movimento:
Digitação de Documentos
Data da digitação:
21/01/2008
Tipo do Movimento:
Recebimento
Data de Recebimento:
18/01/2008
Tipo do Movimento:
Decisão - Recebimento de Denúncia ou Queixa
Data Decisão:
18/01/2008
Descrição:
Portanto, recebo a denúncia e designo o dia 29/01/08, às 13h50min, para realização do interrogatório.
Requisite-se e cite-se o réu.
Expeça-se mandado de busca e apreensão da FAC. Prazo de 48 horas.
Ciência ao Ministér...
Ver íntegra do(a) Decisão
Tipo do Movimento:
Conclusão ao Juiz
Data da conclusão:
15/01/2008
Juiz:
ALCIDES DA FONSECA NETO
Tipo do Movimento:
Recebidos os autos
Data do recebimento:
14/01/2008
Tipo do Movimento:
Remessa
Destinatário:
Ministério Público
Data da remessa:
10/01/2008
Prazo:
15 dia(s)
Tipo do Movimento:
Distribuição Sorteio
Data da distribuição:
02/01/2008
Serventia:
Cartório da 11ª Vara Criminal - 11ª Vara Criminal
Carta Precatória:
0060876-50.2010.8.19.0038
0142118-94.2011.8.19.0038
Processo(s) no Tribunal
de Justiça:
Não há.
Localização
na serventia:
Arquivo Geral
Os autos de processos findos terão como
destinação final a guarda permanente ou
a eliminação, depois de cumpridos os
respectivos prazos de guarda definidos na Tabela de
Temporalidade de Documentos do PJERJ.
I'm trying to split a long text of a Norm and extract specific range of text that are the articles of that Norm. I found that using re.split() in python is the best way (I think) to make the job. So here is an example of the text (Spanish) that I'm trying to split
test = "11.3.2 Debe llevarse a cabo mediante equipos o sistemas de seguridad que eviten
la explosión por golpe, chispa o calentamiento. 12. Requisitos de seguridad e
higiene para el transporte y almacenamiento de sustancias corrosivas, irritantes
o tóxicas 12.1 El almacenamiento de sustancias corrosivas, irritantes o tóxicas debe
hacerse en recipientes específicos, de materiales compatibles con la sustancia de
que se trate. 12.2 Cuando el transporte de sustancias corrosivas, irritantes o
tóxicas en los centros de trabajo se realice a través de un sistema de tuberías o
recipientes portátiles, éstos deben estar cerrados para evitar que su contenido se
derrame o fugue."
So what I want to achieve is to split the text and have an array of the articles. ['11.3.2 Debe llevarse ...','12. Requisitos ...','12.1 El almacenamiento ...','12.2 Cuando...'].
So currently what I've done with no success is:
re.split("\s(\d{1,2}\.\d*\.*\d*\s[A-Z]+)",test)
As a result:
['11.3.2 Debe llevarse a cabo ...', '12. R', 'equisitos de seg ...', '12.1 E', 'l almacenamiento de sustancias corrosivas ... ', '12.2 C', 'uando el transporte de sustancias corrosivas ...', '13. V', 'igilancia La vigilancia del...']
Any suggestions?
You could do the following:
import re
test = """11.3.2 Debe llevarse a cabo mediante equipos o sistemas de seguridad que eviten
la explosión por golpe, chispa o calentamiento. 12. Requisitos de seguridad e
higiene para el transporte y almacenamiento de sustancias corrosivas, irritantes
o tóxicas 12.1 El almacenamiento de sustancias corrosivas, irritantes o tóxicas debe
hacerse en recipientes específicos, de materiales compatibles con la sustancia de
que se trate. 12.2 Cuando el transporte de sustancias corrosivas, irritantes o
tóxicas en los centros de trabajo se realice a través de un sistema de tuberías o
recipientes portátiles, éstos deben estar cerrados para evitar que su contenido se
derrame o fugue."""
pattern = re.compile('\d{1,2}(\.\d{1,2})*([^\d]+)')
for match in pattern.finditer(test):
print(match.group())
print('-----------')
Output
11.3.2 Debe llevarse a cabo mediante equipos o sistemas de seguridad que eviten
la explosión por golpe, chispa o calentamiento.
-----------
12. Requisitos de seguridad e
higiene para el transporte y almacenamiento de sustancias corrosivas, irritantes
o tóxicas
-----------
12.1 El almacenamiento de sustancias corrosivas, irritantes o tóxicas debe
hacerse en recipientes específicos, de materiales compatibles con la sustancia de
que se trate.
-----------
12.2 Cuando el transporte de sustancias corrosivas, irritantes o
tóxicas en los centros de trabajo se realice a través de un sistema de tuberías o
recipientes portátiles, éstos deben estar cerrados para evitar que su contenido se
derrame o fugue.
-----------
The pattern \d{1,2}(\.\d{1,2})*([^\d]+) will match the header (the numbering) followed by everything that is not a number. As an alternative you could use the following, with a lookahead:
pattern = re.compile('\d{1,2}(\.\d{1,2})*(.+?)(?=(\d{1,2}(\.\d{1,2})*|$))', re.DOTALL)
for match in pattern.finditer(test):
print(match.group())
print('-----------')
Output
11.3.2 Debe llevarse a cabo mediante equipos o sistemas de seguridad que eviten
la explosión por golpe, chispa o calentamiento.
-----------
12. Requisitos de seguridad e
higiene para el transporte y almacenamiento de sustancias corrosivas, irritantes
o tóxicas
-----------
12.1 El almacenamiento de sustancias corrosivas, irritantes o tóxicas debe
hacerse en recipientes específicos, de materiales compatibles con la sustancia de
que se trate.
-----------
12.2 Cuando el transporte de sustancias corrosivas, irritantes o
tóxicas en los centros de trabajo se realice a través de un sistema de tuberías o
recipientes portátiles, éstos deben estar cerrados para evitar que su contenido se
derrame o fugue.
-----------
The idea is to match everything that is followed by a header or the end of the text. Note the use of the flag re.DOTALL.
I suggest split by the number of the norms and then join the pieces 2 by 2
x = re.split(r"(?:\A\s*|\.\s+)(\d+(?:(?:[.]\d+)+|[.]))", test_str)[1:]
list = [i+j for i,j in zip(x[::2], x[1::2])]
print(list)
See demo here
Another solution with findall:
re.findall(r"(?s)(?:\d+\.\s|(?:\d+\.)+\d+\s)(?:(?!\d+\.).)+",txt)
Out:
['11.3.2 Debe llevarse a cabo mediante equipos o sistemas de seguridad que eviten \nla explosión por golpe, chispa o calentamiento.',
'12. Requisitos de seguridad e \nhigiene para el transporte y almacenamiento de sustancias corrosivas, irritantes \no tóxicas',
'12.1 El almacenamiento de sustancias corrosivas, irritantes o tóxicas debe \nhacerse en recipientes específicos, de materiales compatibles con la sustancia de \nque se trate.',
'12.2 Cuando el transporte de sustancias corrosivas, irritantes o \ntóxicas en los centros de trabajo se realice a través de un sistema de tuberías o \nrecipientes portátiles, éstos deben estar cerrados para evitar que su contenido se \nderrame o fugue.']
"""
(?s) '.' matches \n, too
(?:\d+\.\s|(?:\d+\.)+\d+\s) the exact numbering pattern
(?:(?!\d+\.).)+ matches any character which not a start of a numbering
Edit:
(?:.(?!\d+\.))+ changed to (?:(?!\d+\.).)+
The previous pattern cuts the last char (in our case the space) before the numbering.
"""
I have a large string that has an id and two words in spanish:
large__string = '''
Vaya ir VMM03S0 0.427083
mañanita mañana RG 0.796611
, , Fc 1
buscando buscar VMG0000 1
una uno DI0FS0 0.951575
lavadora lavadora NCFS000 0.414738
con con SPS00 1
la el DA0FS0 0.972269
que que PR0CN000 0.562517
sorprender sorprender VMN0000 1
a a SPS00 0.996023
una uno DI0FS0 0.951575
persona persona NCFS000 0.98773
muy muy RG 1
especial especial AQ0CS0 1
para para SPS00 0.999103
nosotros nosotros PP1MP000 1
, , Fc 1
y y CC 0.999962
la lo PP3FSA00 0.0277039
encontramos encontrar VMIP1P0 0.65
. . Fp 1
Pero pero CC 0.999764
vamos ir VMIP1P0 0.655914
a a SPS00 0.996023
lo el DA0NS0 0.457533
que que PR0CN000 0.562517
ninguna ninguno DI0S3DF 0.345344
error error A3FSD23 1
interesa interesar VMIP3S0 0.994868
LO_QUE_INTERESA_La lo_que_interesa_la NP00000 1
lavadora lavador AQ0FS0 0.585262
tiene tener VMIP3S0 1
una uno DI0FS0 0.951575
clasificación clasificación NCFS000 1
A+ a+ NP00000 1
, , Fc 1
de de SPS00 0.999984
las el DA0FP0 0.970954
que que PR0CN000 0.562517
ahorran ahorrar VMIP3P0 1
energía energía NCFS000 1
, , Fc 1
si si CS 0.99954
no no RN 0.998134
me me PP1CS000 0.89124
equivoco equivocar VMIP1S0 1
. . Fp 1
Lava lavar VMIP3S0 0.397388
hasta hasta SPS00 0.957698
7 7 Z 1
kg kilogramo NCMN000 1
, , Fc 1
no no RN 0.998134
está estar VAIP3S0 0.999201
nada nada RG 0.135196
mal mal RG 0.497537
, , Fc 1
se se P00CN000 0.465639
le le PP3CSD00 1
veía ver VMII3S0 0.62272
un uno DI0MS0 0.987295
gran gran AQ0CS0 1
tambor tambor NCMS000 1
( ( Fpa 1
de de SPS00 0.999984
acero acero NCMS000 0.973481
inoxidable inoxidable AQ0CS0 1
) ) Fpt 1
y y CC 0.999962
un uno DI0MS0 0.987295
consumo consumo NCMS000 0.948927
máximo máximo AQ0MS0 0.986111
de de SPS00 0.999984
49 49 Z 1
litros litro NCMP000 1
Mandos mandos NP00000 1
intuitivos intuitivo AQ0MP0 1
, , Fc 1
todo todo PI0MS000 0.43165
muy muy RG 1
bien bien RG 0.902728
explicado explicar VMP00SM 1
, , Fc 1
nada nada PI0CS000 0.850279
que que PR0CN000 0.562517
ver ver VMN0000 0.997382
con con SPS00 1
la el DA0FS0 0.972269
lavadora lavadora NCFS000 0.414738
de de SPS00 0.999984
casa casa NCFS000 0.979058
de de SPS00 0.999984
mis mi DP1CPS 0.995868
padres padre NCMP000 1
Además además NP00000 1
incluye incluir VMIP3S0 0.994868
la el DA0FS0 0.972269
tecnología tecnología NCFS000 1
Textileprotec textileprotec NP00000 1
que que PR0CN000 0.562517
protege proteger VMIP3S0 0.994868
nuestras nuestro DP1FPP 0.994186
ninguna ninguno DI0S3DF 0.345344
falla falla NCFSD23 1
prendas prenda NCFP000 0.95625
más más RG 1
preciadas preciar VMP00PF 1
. . Fp 1'''
I would like to extract in a list ninguno followed by the id (to the right) and the second word that have as id NC_ _ _ _ _. Where _ _ _ _ _ are free characters of the id, they must be consecutive (i.e. they must have this precedence ninguno followed by NC, they must be "together"). For example let's focus in this pattern:
ninguna ninguno DI0S3DF 0.345344
falla falla NCFSD23 1
for large__string I would like to extract this as:
[('ninguno', 'DI0S3DF'), ('falla', 'NCFSD23')]
This is what I tried:
pattern__ = re.findall(r'^(\w+)\s.+\s(ninguno)\s[0-9.]+\n^(.+)\s.+\s(NC)', large__string)
But I get an empty list. The regex is wrong, how can I create a regex that extract the above pattern?. Thanks in advance.
You need to use re.findall method.
>>> s = '''Vaya ir VMM03S0 0.427083
mañanita mañana RG 0.796611
, , Fc 1
buscando buscar VMG0000 1
una uno DI0FS0 0.951575
lavadora lavadora NCFS000 0.414738
con con SPS00 1
la el DA0FS0 0.972269
que que PR0CN000 0.562517
sorprender sorprender VMN0000 1
a a SPS00 0.996023
una uno DI0FS0 0.951575
persona persona NCFS000 0.98773
muy muy RG 1
especial especial AQ0CS0 1
para para SPS00 0.999103
nosotros nosotros PP1MP000 1
, , Fc 1
y y CC 0.999962
la lo PP3FSA00 0.0277039
encontramos encontrar VMIP1P0 0.65
. . Fp 1
Pero pero CC 0.999764
vamos ir VMIP1P0 0.655914
a a SPS00 0.996023
lo el DA0NS0 0.457533
que que PR0CN000 0.562517
interesa interesar VMIP3S0 0.994868
LO_QUE_INTERESA_La lo_que_interesa_la NP00000 1
lavadora lavador AQ0FS0 0.585262
tiene tener VMIP3S0 1
una uno DI0FS0 0.951575
clasificación clasificación NCFS000 1
A+ a+ NP00000 1
, , Fc 1
de de SPS00 0.999984
las el DA0FP0 0.970954
que que PR0CN000 0.562517
ahorran ahorrar VMIP3P0 1
energía energía NCFS000 1
, , Fc 1
si si CS 0.99954
no no RN 0.998134
me me PP1CS000 0.89124
equivoco equivocar VMIP1S0 1
. . Fp 1
Lava lavar VMIP3S0 0.397388
hasta hasta SPS00 0.957698
7 7 Z 1
kg kilogramo NCMN000 1
, , Fc 1
no no RN 0.998134
está estar VAIP3S0 0.999201
nada nada RG 0.135196
mal mal RG 0.497537
, , Fc 1
se se P00CN000 0.465639
le le PP3CSD00 1
veía ver VMII3S0 0.62272
un uno DI0MS0 0.987295
gran gran AQ0CS0 1
tambor tambor NCMS000 1
( ( Fpa 1
de de SPS00 0.999984
acero acero NCMS000 0.973481
inoxidable inoxidable AQ0CS0 1
) ) Fpt 1
y y CC 0.999962
un uno DI0MS0 0.987295
consumo consumo NCMS000 0.948927
máximo máximo AQ0MS0 0.986111
de de SPS00 0.999984
49 49 Z 1
litros litro NCMP000 1
Mandos mandos NP00000 1
intuitivos intuitivo AQ0MP0 1
, , Fc 1
todo todo PI0MS000 0.43165
muy muy RG 1
bien bien RG 0.902728
explicado explicar VMP00SM 1
, , Fc 1
nada nada PI0CS000 0.850279
que que PR0CN000 0.562517
ver ver VMN0000 0.997382
con con SPS00 1
la el DA0FS0 0.972269
lavadora lavadora NCFS000 0.414738
de de SPS00 0.999984
casa casa NCFS000 0.979058
de de SPS00 0.999984
mis mi DP1CPS 0.995868
padres padre NCMP000 1
Además además NP00000 1
incluye incluir VMIP3S0 0.994868
la el DA0FS0 0.972269
tecnología tecnología NCFS000 1
Textileprotec textileprotec NP00000 1
que que PR0CN000 0.562517
protege proteger VMIP3S0 0.994868
nuestras nuestro DP1FPP 0.994186
ninguna ninguno DI0S3DF 0.345344
falla falla NCFSD23 1
prendas prenda NCFP000 0.95625
más más RG 1
preciadas preciar VMP00PF 1
. . Fp 1'''
>>> re.findall(r'(?m)^.*?\b(ninguno)\s+(\S+)\s+[0-9.]+\n.*?\s(\S+)\s+(NC\S+)\s+[0-9.]+$', s)
[('ninguno', 'DI0S3DF', 'falla', 'NCFSD23')]
Regex Demo
Since there are 4 capturing groups used, you must get a list of tuples of 4 items each.
This question already has answers here:
Extracting tuples with nltk?
(2 answers)
Closed 8 years ago.
Im new with python could anybody help me on how can to create a regular expresion given a list of strings like this:
test_string = "pero pero CC
tan tan RG
antigua antiguo AQ0FS0
que que CS
según según SPS00
mi mi DP1CSS
madre madre NCFS000"
how to return a tuple like this where NCFS00 denotes female noun and AQ0FS0 denotes female adjective (in spanish), the morphological order is important, since they have to match as the following example:
> ([madre, NCFS00],[antigua, AQ0FS0])
I would like to return the word with it´s associated tag given test_string if and only if they have the adjective, noun morphological occurrence (e.g. [Noun, NCFS00],[Adjective, AQ0FS0]) this is what i done:
# -- coding: utf-8 --
import re
#str = "pero pero CC " \
"tan tan RG " \
"antigua antiguo AQ0FS0" \
"que que CS " \
"según según SPS00 " \
"mi mi DP1CSS " \
"madre madre NCFS000"
tupla1 = re.findall(r'(\w+)\s\w+\s(AQ0FS0)', str)
print tupla1
tupla2 = re.findall(r'(\w+)\s\w+\s(NCFS00)',str)
print tupla2
the output is the following:
[('antigua', 'AQ0FS0')] [('madre', 'NCFS00')]
The problem with this output is that if i pass it a long test_string i need to preserve the "order" or "occurrence" of the tags (i.e. i only can print a tuple if and only if they have the following order: AQ0FS0 and NCFS000 in oder words: female adjective, female noun).
For example, if i pass a string like this:
str = ''' Hola hola I 1
compis compis NCMS000 0.500006
! ! Fat 1
No no RN 0.998045
sabía saber VMII3S0 0.592869
como como CS 0.999289
se se P00CN000 0.465639
ponía poner VMII3S0 0.65
una uno DI0FS0 0.951575
lavadora lavadora NCFS000 0.414738
hasta hasta SPS00 0.957698
que que PR0CN000 0.562517
conocí conocer VMIS1S0 1
esta este DD0FS0 0.986779
y y CC 0.999962
es ser VSIP3S0 1
que que CS 0.437483
es ser VSIP3S0 1
muy muy RG 1
sencilla sencillo AQ0FS0 1
de de SPS00 0.999984
utilizar utilizar VMN0000 1
! ! Fat 1
Todo todo DI0MS0 0.560961
un uno DI0MS0 0.987295
gustazo gustazo NCMS000 1
cuando cuando CS 0.985595
estamos estar VAIP1P0 1
aprendiendo aprender VMG0000 1
para para SPS00 0.999103
emancipar emancipar VMN0000 1
nos nos PP1CP000 1
, , Fc 1
que que CS 0.437483
si si CS 0.99954
nos nos PP1CP000 0.935743
ponen poner VMIP3P0 1
facilidad facilidad NCFS000 1
con con SPS00 1
las el DA0FP0 0.970954
tareas tarea NCFP000 1
de de SPS00 0.999984
la el DA0FS0 0.972269
casa casa NCFS000 0.979058
pues pues CS 0.998047
mejor mejor AQ0CS0 0.873665
que que PR0CN000 0.562517
mejor mejor AQ0CS0 0.873665
. . Fp 1
Antes_de antes_de SPS00 1
esta este PD0FS000 0.0132212
teníamos tener VMII1P0 1
otra otro DI0FS0 0.803899
de de SPS00 0.999984
la el DA0FS0 0.972269
marca marca NCFS000 0.972603
Otsein otsein NP00000 1
, , Fc 1
de de SPS00 0.999984
estas este DD0FP0 0.97043
que que PR0CN000 0.562517
van ir VMIP3P0 1
incluidas incluir VMP00PF 1
en en SPS00 1
el el DA0MS0 1
mobiliario mobiliario NCMS000 0.476077
y y CC 0.999962
además además RG 1
era ser VSII1S0 0.491262
de de SPS00 0.999984
carga carga NCFS000 0.952569
superior superior AQ0CS0 0.992424
, , Fc 1
pero pero CC 0.999764
tan tan RG 1
antigua antiguo AQ0FS0 0.953488
que que CS 0.437483
según según SPS00 0.995943
mi mi DP1CSS 0.999101
madre madre NCFS000 1
, , Fc 1
nadie nadie PI0CS000 1
la lo PP3FSA00 0.0277039
podía poder VMII3S0 0.63125
tocar tocar VMN0000 1
porque porque CS 1
solo solo RG 0.0472103
la lo PP3FSA00 0.0277039
entendía entender VMII3S0 0.65
ella él PP3FS000 1
. . Fp 1
Esta este PD0FS000 0.0132212
es ser VSIP3S0 1
de de SPS00 0.999984
la el DA0FS0 0.972269
marca marca NCFS000 0.972603
Aeg aeg NP00000 1
y y CC 0.999962
dentro_de dentro_de SPS00 1
este este DD0MS0 0.960092
tipo tipo NCMS000 1
de de SPS00 0.999984
lavadoras lavadora NCFP000 0.411969
de de SPS00 0.999984
esta este DD0FS0 0.986779
marca marca NCFS000 0.972603
las lo PP3FPA00 0.0289466
había haber VAII1S0 0.353863
más más RG 1
caras caro AQ0FP0 0.417273
o o CC 0.999769
más más RG 1
baratas barato AQ0FP0 0.3573
y y CC 0.999962
está estar VAIP3S0 0.999201
digamos decir VMSP1P0 0.785925
que que CS 0.437483
está estar VAIP3S0 0.999201
en en SPS00 1
el el DA0MS0 1
punto punto NCMS000 1
medio medio AQ0MS0 0.314286
. . Fp 1
Es ser VSIP3S0 1
de de SPS00 0.999984
color color NCMS000 1
blanco blanco AQ0MS0 0.598684
y y CC 0.999962
tiene tener VMIP3S0 1
carga carga NCFS000 0.952569
frontal frontal AQ0CS0 0.657209
, , Fc 1
con con SPS00 1
una uno DI0FS0 0.951575
capacidad capacidad NCFS000 1
de de SPS00 0.999984
6kg 6kg Z 1
. . Fp 1
En en SPS00 1
casa casa NCFS000 0.979058
a_pesar_de a_pesar_de SPS00 1
ser ser VSN0000 0.940705
cuatro 4 Z 1
, , Fc 1
se se P00CN000 0.465639
ponen poner VMIP3P0 1
lavadoras lavadora NCFP000 0.411969
casi casi RG 1
todos todo DI0MP0 0.624221
o o CC 0.999769
todos todo DI0MP0 0.624221
los el DA0MP0 0.976481
días día NCMP000 1
. . Fp 1
En en SPS00 1
su su DP3CS0 1
parte parte NCFS000 0.499183
de de SPS00 0.999984
arriba arriba RG 0.986014
encontramos encontrar VMIP1P0 0.65
la el DA0FS0 0.972269
" " Fe 1
; ; Fx 1
zona zona NCFS000 1
de de SPS00 0.999984
mandos mando NCMP000 1
" " Fe 1
; ; Fx 1
, , Fc 1
donde donde PR000000 0.967437
se se P00CN000 0.465639
puede poder VMIP3S0 0.999117
echar echar VMN0000 1
el el DA0MS0 1
detergente detergente NCMS000 0.49273
, , Fc 1
aunque aunque CC 1
en en SPS00 1
nuestro nuestro DP1MSP 0.94402
caso caso NCMS000 0.99812
lo lo PP3CNA00 0.271177
a a SPS00 1
el el DA0MS0 1
ser ser VSN0000 0.940705
gel gel NCMS000 1
lo lo PP3CNA00 0.271177
ponemos poner VMIP1P0 1
directamente directamente RG 1
junto_con junto_con SPS00 1
la el DA0FS0 0.972269
ropa ropa NCFS000 1
. . Fp 1
Luego luego RG 0.996689
tiene tener VMIP3S0 1
la el DA0FS0 0.972269
rueda rueda NCFS000 0.72093
para para SPS00 0.999103
elegir elegir VMN0000 1
el el DA0MS0 1
programa programa NCMS000 0.953488
y y CC 0.999962
los el DA0MP0 0.976481
intermitentes intermitente NCMP000 0.342773
que que PR0CN000 0.562517
indican indicar VMIP3P0 1
en en SPS00 1
que que CS 0.437483
paso paso NCMS000 0.905738
de de SPS00 1
el el DA0MS0 1
programa programa NCMS000 0.953488
estaba estar VAII1S0 0.5
. . Fp 1
Como como CS 0.999289
todas todo PI0FP000 0.0490506
tiene tener VMIP3S0 1
programas programa NCMP000 0.97619
más más RG 1
cortos corto AQ0MP0 1
y y CC 0.999962
más más RG 1
largos largo AQ0MP0 0.97619
, , Fc 1
incluso incluso RG 0.996383
un uno DI0MS0 0.987295
programa programa NCMS000 0.953488
que que PR0CN000 0.562517
seria seriar VMIP3S0 0.151546
como como CS 0.999289
lavar lavar VMN0000 1
a a SPS00 0.996023
mano mano NCFS000 0.992095
y y CC 0.999962
otro otro DI0MS0 0.612994
ideal ideal NCMS000 0.5
para para SPS00 0.999103
estores estor NCMP000 1
, , Fc 1
que que PR0CN000 0.562517
salen salir VMIP3P0 0.972603
casi casi RG 1
secos seco AQ0MP0 1
y y CC 0.999962
planchaditos planchar VMP00PM 0.691767
para para SPS00 0.999103
colgar colgar VMN0000 1
y y CC 0.999962
ya ya RG 0.999395
está estar VAIP3S0 0.999201
. . Fp 1
Es ser VSIP3S0 1
muy muy RG 1
fácil fácil AQ0CS0 1
de de SPS00 0.999984
aprender aprender VMN0000 1
la lo PP3FSA00 1
y y CC 0.999962
además además RG 1
tiene tener VMIP3S0 1
indicador indicador NCMS000 0.64273
por por SPS00 1
sonido sonido NCMS000 1
de de SPS00 0.999984
cuando cuando CS 0.985595
acaba acabar VMIP3S0 0.992958
, , Fc 1
lista listar VMIP3S0 0.220088
para para SPS00 0.999103
abrir abrir VMN0000 1
y y CC 0.999962
tender tender VMN0000 1
. . Fp 1
Por por SPS00 1
decir decir VMN0000 0.997512
algo algo PI0CS000 0.900246
malo malo AQ0MS0 0.657087
de de SPS00 0.999984
ella él PP3FS000 1
, , Fc 1
sería ser VSIC1S0 0.5
que que CS 0.437483
cuando cuando CS 0.985595
centrifuga centrifugar VMIP3S0 0.994859
, , Fc 1
algo algo PI0CS000 0.900246
que que PR0CN000 0.562517
hace hacer VMIP3S0 1
muy muy RG 1
bien bien RG 0.902728
, , Fc 1
pues pues CS 0.998047
vibra vibrar VMIP3S0 0.994856
un uno DI0MS0 0.987295
poco poco RG 0.542435
y y CC 0.999962
se se P00CN000 0.465639
nota notar VMIP3S0 0.419995
el el DA0MS0 1
ruido ruido NCMS000 1
jeje jeje NCMS000 0.833445
, , Fc 1
pero pero CC 0.999764
no no RN 0.998134
se se P00CN000 0.465639
mueve mover VMIP3S0 0.994868
de de SPS00 0.999984
su su DP3CS0 1
sitio sitio NCMS000 0.980769
! ! Fat 1
! ! Fat 1
Saludillos saludillos NP00000 0.411768
! ! Fat 1
'''
I have the following output:
[('sencilla', 'AQ0FS0'), ('antigua', 'AQ0FS0')]
[('lavadora', 'NCFS00'), ('facilidad', 'NCFS00'), ('casa', 'NCFS00'), ('marca', 'NCFS00'), ('carga', 'NCFS00'), ('madre', 'NCFS00'), ('marca', 'NCFS00'), ('marca', 'NCFS00'), ('carga', 'NCFS00'), ('capacidad', 'NCFS00'), ('casa', 'NCFS00'), ('parte', 'NCFS00'), ('zona', 'NCFS00'), ('ropa', 'NCFS00'), ('rueda', 'NCFS00'), ('mano', 'NCFS00')]
Which don´t preserve the previous Noun, adjective order.
Here you go (fyi -- I advise you not use str as a variable)
import re
s = "pero pero CC " \
"tan tan RG " \
"antigua antiguo AQ0FS0" \
"que que CS " \
"según según SPS00 " \
"mi mi DP1CSS " \
"madre madre NCFS000"
print re.findall(r'([^\s]+) \1 ([^\s]+)', s)