Manish Mukherjee
Manish Mukherjee

Reputation: 27

Extracting a line from a text

Hi i am trying to extract a particular line from the text extract of a pdf file but unable to do it Below is my code


from tika import parser 
parsed_pdf = parser.from_file("mypdf.pdf")
data =parsed_pdf['content'] 
print(data)
clean_data =data.strip()
regex = r':\s*\n+'
subst = ": "

for line in re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n'):
    if line != '':
        print (line.strip())  

The output what i am getting is

Bulletin des Annonces Légales Obligatoires – Annonce n° 2102361 du 31 mai 2021
31 mai 2021 BULLETIN DES ANNONCES LEGALES OBLIGATOIRES Bulletin n°65
2102361 Page 1
Avis de convocation / avis de réunion
FONCIERE 7 INVESTISSEMENT
Société Anonyme au capital de 1 120 000 euros
Siège social : 55, rue Pierre Charron – 75008 Paris
486 820 152 RCS PARIS
________________________________________

Rectificatif à l’avis de réunion paru le 26 mai 2021, bulletin n°63


Dans l’avertissement COVID, le troisième paragraphe est rectifié comme suit : « A l’occasion de cette Assemblée Générale Mixte du mardi 29 juin 2021 à 10 heures, au siège social,
il ne sera pas possible d’y assister personnellement. Dans ces conditions, les actionnaires sont invités
à voter par correspondance à l’aide du formulaire de vote ou à donner pouvoir, de préférence, au
Président ou sans indication de mandataire. »

Dans l’ordre du jour, à titre extraordinaire, la mention de la délibération, sur la « Délégation de
pouvoirs à donner au Conseil d’administration à l’effet de procéder à l’augmentation du capital
social par émission d’actions réservées aux adhérents d’un plan d’épargne d’entreprise établis en
application des articles L.225-129-6 du Code de commerce et L.3332-18 et suivants du Code » n’a
pas lieu d’être, aucune résolution n’étant présentée par le Conseil en ce sens.


Dans A - les conditions de Participation à l’Assemblée , 1. Formalités préalables à effectuer pour
participer à l’Assemblée générale, le texte est rectifié comme suit : (…)
Conformément à l’article R.225-85 du Code de commerce, pourront participer à l’Assemblée les
actionnaires qui justifieront : -  s’il s’agit d’actions nominatives : d’un enregistrement comptable desdites actions dans les
comptes titres nominatifs de la Société au plus tard le deuxième jour ouvré précédant
l’Assemblée à zéro heure, heure de Paris, soit le vendredi 25 juin 2021 à zéro heure, heure de
Paris ;
-  s’il s’agit d'actions au porteur : d’un enregistrement comptable desdites actions (le cas échéant
au nom de l’intermédiaire inscrit pour le compte de l’actionnaire concerné dans les conditions
légales et réglementaires) dans les comptes-titres au porteur tenus par leur intermédiaire
habilité au plus tard le deuxième jour ouvré précédant l’Assemblée à zéro heure, heure de Paris,
soit le vendredi 25 juin 2021 à zéro heure, heure de Paris. Les intermédiaires habilités
délivreront une attestation de participation, en annexe au formulaire de vote par
correspondance ou de procuration établis au nom de l’actionnaire ou pour le compte de
l’actionnaire représenté par l’intermédiaire inscrit.
Seuls les actionnaires justifiant de cette qualité au plus tard le deuxième jour ouvré précédant
l’Assemblée à zéro heure, heure de Paris, soit au le vendredi 25 juin 2021 à zéro heure, heure de
Paris, dans les conditions rappelées ci-dessus, pourront participer à cette Assemblée.

L’actionnaire pourra à tout moment céder tout ou partie de ses actions : -  si le dénouement de la cession intervenait avant le vendredi 25 juin 2021 à zéro heure, heure de
Paris, le vote exprimé par correspondance, le pouvoir, éventuellement accompagnés d’une
attestation de participation, seraient invalidés ou modifiés en conséquence, selon le cas. A cette
fin, l'intermédiaire habilité teneur de compte devra notifier la cession à la Société et lui
transmettre les informations nécessaires ;
31 mai 2021 BULLETIN DES ANNONCES LEGALES OBLIGATOIRES Bulletin n°65
2102361 Page 2

-  si le dénouement de la cession ou toute autre opération était réalisée après le vendredi 25 juin
2021, à zéro heure, heure de Paris, quel que soit le moyen utilisé, elle ne serait pas notifiée par
l'intermédiaire habilité ou prise en considération par la société Foncière 7 Investissement .

Dans B.  Dépôt de questions écrites, le texte est rectifié comme suit.
Conformément à l’article R.225-84 du Code de commerce, l’actionnaire qui souhaite poser des
questions écrites peut, jusqu’au quatrième jour ouvré précédant la date de l’Assemblée au plus tard,
soit le mercredi 23 juin 2021, à minuit, heure de Paris, adresser ses questions par lettre
recommandée avec accusé de réception, à la société Foncière 7 Investissement 55, rue Pierre
Charron 75008 Paris, ou à l’adresse électronique [email protected]. Pour être
prises en compte, elles doivent être accompagnées d’une attestation d’inscription, soit dans les
comptes au nominatif tenus par la Société, soit dans les comptes de titres au porteur tenus par un
intermédiaire mentionné à l’article L.211-3 du Code monétaire et financier.

Un avis de convocation sera publié au Bulletin des annonces légales obligatoires 15 jours au moins
avant la date de l’Assemblée générale.
Le présent Avis rectificatif est publié sur le site internet de la société : http://www.fonciere7investissement.fr



Le Conseil d'administration de la Société Foncière 7 Investissement



31 mai 2021 BULLETIN DES ANNONCES LEGALES OBLIGATOIRES Bulletin n°65
2102361 Page 3

How can extract only the 5th line from here which containsFONCIERE 7 INVESTISSEMENT

I have tried

print(line[5])

but getting output as

6

Any help is appreciated

Upvotes: 0

Views: 113

Answers (3)

Paul P
Paul P

Reputation: 3907

Have you tried enumerate()?

for index, line in enumerate(re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n')):
    line = line.strip()

    if not line:
        continue

    if index == 4:
        print(line)  

Upvotes: -1

pho
pho

Reputation: 25489

First, in python, list indices are zero-based, which means that when you ask for the index 5, you get the sixth element.

Second, line contains a single line! It isn't a collection of all lines, so line[5] will give you the sixth character in that line, not the fifth line overall.

So you should first get the list of all lines:

all_lines = re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n')

Now, the fifth line in this list will be:

all_lines[4]

However, you might want to include your filter to remove blank lines so that all_lines doesn't contain any blank lines. You can do this with a regular loop, or a list comprehension:

all_lines = []
for line in re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n'):
    if line:
        all_lines.append(line)

print(all_lines[4])

Or as a list-comp:

all_lines = [line for line in re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n') if line]

We can skip the != "" in if line != "", because empty strings are Falsey.

However, since you're looking for a known term in the line, you can also filter by that:

search_term = "FONCIERE 7 INVESTISSEMENT"
all_lines_containing_term = [line for line in re.sub(regex, subst, clean_data, 0, re.MULTILINE).split('\n') if search_term in line.upper()]

Upvotes: 1

Amal K
Amal K

Reputation: 4854

How about print(clean_data.split('\n')[4])?

Upvotes: 1

Related Questions