[R] Extraire du texte entre 2 citations
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Extraire du texte entre 2 citations
Bonjour,
je cherche comment créer un script qui me permettrait d'extraire d'un gros fichier texte plusieurs séquences de texte qui sont toujours entourées des mêmes citations.
Je ne peux pas vous mettre le code exact à cause de la confidentialité mais l'idée serait par exemple si je prends le code source cette page que je copie dans un fichier texte :
"
<option value="java" class="code_etx_java" title="Java">JAVA (Java)</option>
<option value="java5" class="code_etx_java" title="Java 5">JAVA (Java 5)</option>
<option value="javascript" class="code_etx_js" title="JavaScript">JS (JavaScript)</option>
bla bla blablabla
<option value="jquery" class="code_etx_js" title="jQuery">JS (jQuery)</option>
"
Dans cet exemple j'aimerai extraire tout ce qui est marqué entre "<option value=" et "</option>" en vouclant dans l'intégralité du fichier texte.
J'espère que mon explication est claire, sinon j'essaierai de faire mieux
Merci d'avance pour votre aide.
je cherche comment créer un script qui me permettrait d'extraire d'un gros fichier texte plusieurs séquences de texte qui sont toujours entourées des mêmes citations.
Je ne peux pas vous mettre le code exact à cause de la confidentialité mais l'idée serait par exemple si je prends le code source cette page que je copie dans un fichier texte :
"
<option value="java" class="code_etx_java" title="Java">JAVA (Java)</option>
<option value="java5" class="code_etx_java" title="Java 5">JAVA (Java 5)</option>
<option value="javascript" class="code_etx_js" title="JavaScript">JS (JavaScript)</option>
bla bla blablabla
<option value="jquery" class="code_etx_js" title="jQuery">JS (jQuery)</option>
"
Dans cet exemple j'aimerai extraire tout ce qui est marqué entre "<option value=" et "</option>" en vouclant dans l'intégralité du fichier texte.
J'espère que mon explication est claire, sinon j'essaierai de faire mieux
Merci d'avance pour votre aide.
Modifié en dernier par fab84 le mer. 28 sept. 2022 07:47, modifié 1 fois.
Re: [..] Extraire du texte entre 2 citations
Bonjour
Le plus court est de passer par la fonction StringRegExp :
Le plus court est de passer par la fonction StringRegExp :
#Include <Array.au3>
Local $sHtml = '<option value="java" class="code_etx_java" title="Java">JAVA (Java)</option>' & @CRLF & _
'<option value="java5" class="code_etx_java" title="Java 5">JAVA (Java 5)</option>' & @CRLF & _
'<option value="javascript" class="code_etx_js" title="JavaScript">JS (JavaScript)</option>' & @CRLF & _
'bla bla blablabla' & @CRLF & _
'<option value="jquery" class="code_etx_js" title="jQuery">JS (jQuery)</option>'
Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
_ArrayDisplay($aExtract)
Local $sHtml = '<option value="java" class="code_etx_java" title="Java">JAVA (Java)</option>' & @CRLF & _
'<option value="java5" class="code_etx_java" title="Java 5">JAVA (Java 5)</option>' & @CRLF & _
'<option value="javascript" class="code_etx_js" title="JavaScript">JS (JavaScript)</option>' & @CRLF & _
'bla bla blablabla' & @CRLF & _
'<option value="jquery" class="code_etx_js" title="jQuery">JS (jQuery)</option>'
Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
_ArrayDisplay($aExtract)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Extraire du texte entre 2 citations
Merci beaucoup pour cette réponse rapide.
Malheureusement quand j'essaie j'ai un message d'erreur "Unterminated string"
J'ai essayé de supprimer les apostrophes pensant que ça venait de là mais ça ne change rien.
Y'a til quelque chose que j'ai raté?
Ps : le fichier que je teste fait 145 132 caractères, 21434 mots, 120 lignes
Malheureusement quand j'essaie j'ai un message d'erreur "Unterminated string"
J'ai essayé de supprimer les apostrophes pensant que ça venait de là mais ça ne change rien.
Y'a til quelque chose que j'ai raté?
Ps : le fichier que je teste fait 145 132 caractères, 21434 mots, 120 lignes
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraire du texte entre 2 citations
Bizarre le code de jguinch devrait marcher...
Peut-être avec cette variante ?
Sinon tu peux poster le fichier texte et on verra
Peut-être avec cette variante ?
Code : Tout sélectionner
Local $aExtract = StringRegExp($sHtml, "(?i)<option value=[^>]+>([^<]+)</option>", 3)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Extraire du texte entre 2 citations
Sinon, simplement charger le fichier dans une variable :
#Include <Array.au3>
Local $sHtml = FileRead("fichierquicontientlesdonnees.txt")
Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
_ArrayDisplay($aExtract)
Local $sHtml = FileRead("fichierquicontientlesdonnees.txt")
Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
_ArrayDisplay($aExtract)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [..] Extraire du texte entre 2 citations
Ecore merci pour votre aide. Je n'y arrive toujours pas.
Je ne peux pas mettre le fichier mais je vous mets en pj un exemple de fichier de la même structure. C'est le code source de la page d'accueil du site météo france.
J'essaie pour cet exemple d'extraire ce qui est entre "previsions-meteo-france" et "icon".
ça ne marche pas non plus... Peut être ça vient du formatage du fichier texte?
J'ai essayé de charger le fichier texte en variable et aussi le code de mikell
Je ne peux pas mettre le fichier mais je vous mets en pj un exemple de fichier de la même structure. C'est le code source de la page d'accueil du site météo france.
J'essaie pour cet exemple d'extraire ce qui est entre "previsions-meteo-france" et "icon".
ça ne marche pas non plus... Peut être ça vient du formatage du fichier texte?
J'ai essayé de charger le fichier texte en variable et aussi le code de mikell
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraire du texte entre 2 citations
Bin où elle est la pièce jointe ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Extraire du texte entre 2 citations
J'ai oublié la pJ désolé.
Re: [..] Extraire du texte entre 2 citations
J'ai l'impression que ma PJ ne se charge pas... J'ai l'impression d'être un boulet
Re: [..] Extraire du texte entre 2 citations
Au cas où elle ne soit pas en PJ voici un lien smash : https://fromsmash.com/9r3Z_XDmPF-ct
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraire du texte entre 2 citations
Je viens de tester le code de jguinch sur ton fichier et ça marche
Si on essaie d'extraire ce qui est entre "previsions-meteo-france" et "icon" ça marche aussi
Si on essaie d'extraire ce qui est entre "previsions-meteo-france" et "icon" ça marche aussi
Code : Tout sélectionner
Local $aExtract = StringRegExp($sHtml, "(?i)previsions-meteo-france(.+?)icon", 3)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Extraire du texte entre 2 citations
Merciii!!
Merci pour votre aide ça fonctionne. Mon erreur je pense était que dans la 2éme partie de mots que je cherchais il y'a des parenthèses, par exemple "prevision (meteo)". En prenant un autre mot qui n'est pas entre parenthèse ça fonctionne
Un petit complément, pour écrire ça dans un fichier texte comment gérer la fonction filewrite dans ce cas?
FileWrite("C:\resultat.txt", $aExtract)
Merci pour votre aide ça fonctionne. Mon erreur je pense était que dans la 2éme partie de mots que je cherchais il y'a des parenthèses, par exemple "prevision (meteo)". En prenant un autre mot qui n'est pas entre parenthèse ça fonctionne
Un petit complément, pour écrire ça dans un fichier texte comment gérer la fonction filewrite dans ce cas?
FileWrite("C:\resultat.txt", $aExtract)
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: [..] Extraire du texte entre 2 citations
Dans les regex les parenthèses sont des caractères spéciaux, il faut les "échapper" avec un "\"
Le code retourne un tableau, il faut le convertir en string avant de l'écrire
En reprenant l'exemple précédent :
Le code retourne un tableau, il faut le convertir en string avant de l'écrire
En reprenant l'exemple précédent :
#Include <Array.au3>
Local $sHtml = FileRead("exemple.txt")
;Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
Local $aExtract = StringRegExp($sHtml, "(?i)previsions-meteo-france(.+?)icon", 3)
;_ArrayDisplay($aExtract)
$txt = _ArrayToString($aExtract, @crlf)
FileWrite("result.txt", $txt)
Local $sHtml = FileRead("exemple.txt")
;Local $aExtract = StringRegExp($sHtml, "(?i)<option value=.+?>(.+?)</option>", 3)
Local $aExtract = StringRegExp($sHtml, "(?i)previsions-meteo-france(.+?)icon", 3)
;_ArrayDisplay($aExtract)
$txt = _ArrayToString($aExtract, @crlf)
FileWrite("result.txt", $txt)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Re: [..] Extraire du texte entre 2 citations
Un très très grand merci ça fonctionne parfaitement comme je le souhaitais.
Vous allez me faire gagner un temps fou...
Encore merci pour votre réactivité et votre aide.
Vous allez me faire gagner un temps fou...
Encore merci pour votre réactivité et votre aide.