1 votes

Portage de Python vers C#

J'essaie d'apprendre C#, venant d'un fond Python/PHP, et j'essaie de porter un script de Python pour commencer.

Le script lit un fichier texte ligne par ligne (environ 150K lignes), applique une liste de regex jusqu'à ce qu'il y ait une correspondance, obtient les résultats des groupes nommés et ajoute les valeurs comme propriétés d'une classe.

Voici à quoi ressemblent les données (chaque ligne commençant par 'No.' est le début d'un nouvel enregistrement) :

No.813177294  09/01/1987  150
Tit.INCAL INDÚSTRIA DE CALÇADOS LTDA (BR/PE)
\*PARÁGRAFO ÚNICO DO ART. 162 DA LPI.
Procurador: ROBERTO C. FREIRE

No.901699870  02/06/2009  LD6
\*Exigência Formal não respondida, Pedido de Registro de Marca considerado inexistente, de acordo com o Art. 157 da LPI

No.830009817  12/12/2008  003
Tit.BIOLAB SANUS FARMACÊUTICA LTDA. (BR/SP)
C.N.P.J./C.I.C./NºINPI : 49475833000106
Apres.: Nominativa ; Nat.: De Produto
Marca: ENXUG
NCL(9) 05 medicamentos para uso humano; preparações farmacêuticas; diuréticos, analgésicos;
anestésicos; anti-helmínticos; antibióticos; hormônios para uso medicinal.
Procurador: CRUZEIRO/NEWMARC PATENTES E MARCAS LTDA

Et à quoi ressemble la regex :

regexp = {
    # No.123456789  13/12/2008  560
    # No.123456789   13/12/2008  560
    # No.123456789 13/12/2008 560
    # No.123456789  560
    'number': re.compile(r'No.(?P<Number>[\d]{9}) +((?P<Date>[\d]{2}/[\d]{2}/[\d]{4}) +)?(?P<Code>.*)'),

    # NCL(7) 25 no no no no no ; no no no no no no; *nonono no non o nono
    # NCL(9) 25 no no no no no ; no no no no no no; *nonono no non o nono
    'ncl': re.compile(r'NCL\([\d]{1}\) (?P<Ncl>[\d]{2})( (?P<Especification>.*))?'),

    'doc': re.compile(r'C.N.P.J./C.I.C./NºINPI : (?P<Document>.*)'),
    'description': re.compile(r'\*(?P<Description>.*)'),

    ...
}

Maintenant mes questions :

1) Puis-je utiliser le même concept, en appliquant chacun d'un Dictionary<string, Regex> dans chaque ligne jusqu'à ce qu'il y ait une correspondance ?

2) Si je le fais, il y a un moyen d'obtenir un Dictionary<string, string> des résultats des groupes nommés ? (À ce stade, je peux tout traiter comme une chaîne de caractères).

3) Si je devais avoir une classe comme celle-ci...

class Record
{
    public string Number { get; set; }
    public string Date { get; set; }
    public string Code { get; set; }
    public string Ncl { get; set; }
    public string Especification { get; set; }
    public string Document { get; set; }
    public string Description { get; set; }
}

...il existe un moyen de définir les propriétés avec les valeurs des groupes nommés ?

4) Je ne comprends pas du tout ce qui se passe ici, essayer de coder dans un langage à typage statique tout en pensant dans un langage à typage dynamique ? Si c'est le cas, que puis-je faire ?

Désolé pour cette question un peu longue. J'ai vraiment essayé de la reprendre pour la rendre plus courte :-)

Merci d'avance.

0voto

Crash893 Points 2407
dictionary<string,string> dic_test = new dictionary<string,string>();

dic_test.add(key,value);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X