Bonjour à tous,
J'a un fichier excel, contenant plusieurs lignes que je lis et peux ensuite placer dans un array, ou un string, peu importe, ce qui est le plus simple.
J'ai trois valeurs possibles, fixes :
777
888
999
Disons que j'appelle V si la valeur est une des ces 3 possibilités et X si c'est autre chose.
Je voudrais vérifier que la ligne est de type différent de XXXXVVVVVVVVVVVVVVVVVVVVVVVVV ou XXVVVVVVVVVVVVVVVVVVVVVVVVVVV en bref (X)i(V)j avec i+j inconstant car les dernières valeurs des lignes peuvent être manquantes. Je veux ne garder que les lignes de type : XXXXVVVVXVVVVVXVVVVVXVVVVV ... où les V sont espacés par au moins un X (et aucun V ça convient également).
La ligne commence toujours par quelques X, lesquels suivis soit que de X, que de V, ou d'un mélange des 2. Une ligne ne contenant que des X est à garder.
X peut-être n'importe quoi, alphanumérique, des caractères de ponctuation, des espaces. C'est parfois même quelques phrases.
Si X est en fin de ligne, il peut être vide (ligne plus courte de 1 ou plusieurs valeurs).
Exemple de données :
J'ai laissé les en-têtes que ce soit plus simple à comprendre. Il y a 2 dernières colonnes, optionnelles, qui ont été ajoutées et contiennent 'Total Score Anxiety Score' et 'TT'. Dans cet exemple, je voudrais supprimer les 2 premières et les 2 dernières lignes. J'ai beaucoup de fichiers à traiter, la majorité n'a pas ces colonnes optionnelles. Dans cet exemple, les lignes à supprimer n'ont pas de dernières valeurs, mais je ne sais pas si c'est toujours le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ID Schedule Diagnosis Subject age (days) BAIYOUTHSELF[1] BAIYOUTHSELF[2] BAIYOUTHSELF[3] BAIYOUTHSELF[4] BAIYOUTHSELF[5] BAIYOUTHSELF[6] BAIYOUTHSELF[7] BAIYOUTHSELF[8] BAIYOUTHSELF[9] BAIYOUTHSELF[10] BAIYOUTHSELF[11] BAIYOUTHSELF[12] BAIYOUTHSELF[13] BAIYOUTHSELF[14] BAIYOUTHSELF[15] BAIYOUTHSELF[16] BAIYOUTHSELF[17] BAIYOUTHSELF[18] BAIYOUTHSELF[19] BAIYOUTHSELF[20] Total Score Anxiety Score TT 3.25322E+11 A TX 9886 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 999 8.48677E+11 A UVSX 8497 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 999 5.88049E+11 B UVSX 4414 0 1 0 0 1 2 0 0 0 1 1 0 0 0 1 0 0 0 1 0 8 40 32 3.96869E+11 B TX 5753 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 40 62 1.45898E+11 A UVSX 8783 777 0 777 777 1 777 777 777 0 777 777 777 777 777 777 777 777 777 777 777 999 21 7 7.08755E+11 B UVSX 4525 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 3 0 1 0 0 9 41 48 7.84342E+11 B TX 6049 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 3 41 4 3.96186E+11 A UVSX 10064 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 999 4.94384E+11 A UVSX 10065 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 999
Autre exemple de fichier : il ne faut supprimer que la 9ième ligne.
Avez-vous des suggestions sur comment procéder ? Qu'est-ce qui serait le plus simple ? Est-ce possible par une seule expression régulière ou plus simple par une boucle testant les valeurs de la ligne une à une ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 3.25322E+11 TUIT A ASD 8739 1 2 2 1 1 2 2 2 1 2 2 2 1 1 1 1 2 2 777 4 4 777 777 4 6 4 777 4 4 4 777 777 777 777 7 7 1 777 Y 777 777 8.48677E+11 TUIT A ASD 8857 0 1 2 2 0 0 0 2 1 1 1 1 0 0 0 1 2 2 777 777 14 17 777 777 777 16 777 777 777 777 777 777 777 777 10 12 1 Y Y Y Y 5.88049E+11 TUIT A ASD 10779 2 2 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 5 5 28 777 777 28 15 20 777 5 5 5 5 5 15 15 20 15 1 Y Y Y Y 3.96869E+11 TUIT A ASD 9134 1 1 1 0 1 2 0 1 1 1 1 0 0 2 0 0 1 1 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 -2 777 777 777 777 1.45898E+11 TUIT A TD 9797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 0 777 777 777 777 7.08755E+11 LCG A TD 8860 1 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 0 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 0 777 777 Y 777 7.84342E+11 LCG A TD 7732 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 0 0 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 -2 Y Y 777 Y 3.96186E+11 LCG A TD 7785 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 0 777 777 777 777 4.94384E+11 LCG A TD 7525 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 9.27091E+11 LCG A ASD 10064 0 1 2 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 777 777 20 777 777 777 777 777 777 777 777 777 777 777 777 777 777 777 -2 777 777 Y 777 1.38536E+11 LCG A ASD 10065 1 2 0 2 2 1 1 2 2 3 1 2 1 2 1 1 0 0 777 14 777 14 19 777 777 14 19 3 777 3 777 3 777 777 777 777 1 777 777 Y Y
Merci beaucoup pour votre aide,
Partager