[perl] remplacer les \n par des <br> dans un fichier ...

remplacer les \n par des <br> dans un fichier ... [perl] - Perl - Programmation

Marsh Posté le 11-08-2003 à 15:21:05    

salut
j'ai un fichier .csv de la forme
 
"1";"texte1";"texte2";"0"
"2";"texte1";"texte2";"0"
"3";"texte1
sur
plusieurs
lignes";"texte2
sur plusieurs
lignes";"0"
 
je voudrais mettre chaque enregistrement sur une seule ligne en remplacant tous les \n par des <br> sauf si le \n est suivi et precedé par un doublequote
j'ai essayé  
 if ($_ =~ /"\n"/)
et  
 if ($_ =~ /"\"\n\""/)
sans succès .... une idée ?

Reply

Marsh Posté le 11-08-2003 à 15:21:05   

Reply

Marsh Posté le 12-08-2003 à 01:29:05    

truc du genre
 
$var =~ s/\\n/<br>/g;
 
pas testé mais ca doit pas etre loin
 
le s c pour remplacer, entre le 1er et le 2e /, tu indique c quoi tu remplace, entre le 2e et le 3e tu indique par quoi, et finilament le g jcrois que c pour l'appliquer à tout les occurences


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 12-08-2003 à 08:13:36    

burgergold a écrit :

truc du genre
 
$var =~ s/\\n/<br>/g;
 
pas testé mais ca doit pas etre loin
 
le s c pour remplacer, entre le 1er et le 2e /, tu indique c quoi tu remplace, entre le 2e et le 3e tu indique par quoi, et finilament le g jcrois que c pour l'appliquer à tout les occurences

s pour substitute
g pour global
ce que tu as écrit devrait marcher


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 12-08-2003 à 09:33:29    

$variable =~ s/\n/<br>/g;
fonctionne en effet, ca me remplace tous les \n par <br>, cependant ce que je veux remplacer c'est seulement les \n encadrés par des " pour que mon fichier devienne :
 
"1";"texte1";"texte2";"0"
"2";"texte1";"texte2";"0"
"3";"texte1<br>sur<br>plusieurs<br>lignes";"texte2<br>sur<br>plusieurs<br>lignes";"0"  
 
$variable =~ s/"\n"/<br>/g; a pas l'air de marcher
$variable =~ s/\"\n\"/<br>/g; non plus
 

Reply

Marsh Posté le 12-08-2003 à 09:37:07    

tigger59 a écrit :

$variable =~ s/\n/<br>/g;
fonctionne en effet, ca me remplace tous les \n par <br>, cependant ce que je veux remplacer c'est seulement les \n encadrés par des " pour que mon fichier devienne :
 
"1";"texte1";"texte2";"0"
"2";"texte1";"texte2";"0"
"3";"texte1<br>sur<br>plusieurs<br>lignes";"texte2<br>sur<br>plusieurs<br>lignes";"0"  
 
$variable =~ s/"\n"/<br>/g; a pas l'air de marcher
$variable =~ s/\"\n\"/<br>/g; non plus


ok alors si $variable contient l'intégralité des données, essaie ceci pour voir :
 

Code :
  1. $variable =~ s/\"\n\"/<br>/g;


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 12-08-2003 à 09:40:47    

non plus j'avais deja essayé  :sweat:

Reply

Marsh Posté le 12-08-2003 à 09:42:19    

Je pense qu'Aricoh voulait plutot dire quelque chose comme ça:

Code :
  1. $variable =~ s/\"(.*?)\n(.*?)\"/"$1<br>$2"/g;

Reply

Marsh Posté le 12-08-2003 à 09:45:51    

Anapajari a écrit :

Je pense qu'Aricoh voulait plutot dire quelque chose comme ça:

Code :
  1. $variable =~ s/\"(.*?)\n(.*?)\"/"$1<br>$2"/g;



heu :sweat: heureusement que tu es là, j'avais pas lu l'exemple de données complètement, I am a big naze today  :(


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Marsh Posté le 14-08-2003 à 10:12:00    

Sauf que la dernière solution ne fonctionne que pour un seul \n au milieu d'un texte non ?
ou alors le /g fait que le filtre tourne en boucle jusqu'à avoir remplacé toutes les occurences ?
 
d


Message édité par d_wrk le 14-08-2003 à 10:12:32
Reply

Marsh Posté le 14-08-2003 à 10:13:23    

d_wrk a écrit :


ou alors le /g fait que le filtre tourne en boucle jusqu'à avoir remplacé toutes les occurences ?


:jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed