En effet. S’il n’y avait pas de caractères invisibles entre des fins de ligne, on pourrait utiliser replace() :Citation:
chercher \n c'est pas dur mais le problème c'est que chercher deux \n \n ça ne va pas car il y a surement quelques chose entre les deux (des espaces ou autre)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 uh = '''pelle seau cheval bobby \t \t flute''' print(repr(uh),'----------------',uh,20*'==',sep='\n',end='\n\n') vh = uh.replace('\n\n\n','\n') print(repr(vh),'----------------',vh,20*'==',sep='\n' )
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 'pelle\nseau\n\n\ncheval\n \nbobby\n\t \t \nflute' ---------------- pelle seau cheval bobby flute ======================================== 'pelle\nseau\ncheval\n \nbobby\n\t \t \nflute' ---------------- pelle seau cheval bobby flute
À cause de la présence de blancs dans la ligne entre ’cheval’ et ’bobby’ et de blancs et tabulations entre ’bobby’ et ’flute’ , il faut recourir aux regex:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 uh = '''pelle seau cheval bobby \t \t flute''' print(repr(uh),'----------------',uh,20*'==',sep='\n',end='\n\n') import re pat = re.compile('\n(?:[ \t]*\n)+') rh = pat.sub('\n',uh) print(repr(rh),'----------------',rh,sep='\n')
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 'pelle\nseau\n\n\ncheval\n \nbobby\n\t \t \nflute' ---------------- pelle seau cheval bobby flute ======================================== 'pelle\nseau\ncheval\nbobby\nflute' ---------------- pelle seau cheval bobby flute
Pour moi, c’est identiqueCitation:
c'est pas la chaine number4 a remonter.
C'est supprimer tout les 3 sauts de ligne et les remplaces par 1
Remarque bien l’utilité de la fonction repr()