>>> [art['titre'] for art in articles if art['type'] == 'article']
['liminaire', '1er', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '17', '18', '19', 'L. 6331-50 du code du travail Chambres des métiers', "de l'artisanat 39 869", 'L. 6331-50 du code du travail', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '58', '59', '60', '61', '62', '63']
Here we can see the title is wrong between 19 and 20 and thus the content of the article 19 is incomplete (dispatched between following wrong articles):
>>> [(art['titre'], art['alineas']) for art in articles if art['type'] == 'article'][17]
('19', {'001': "I. - L'article 46 de la loi n° 2011-1977 du 28 décembre 2011 de finances pour 2012, dans sa rédaction résultant de l'article 41 de la loi n° 2016-1088 du 8 août 2016 relative au travail, à la modernisation du dialogue social et à la sécurisation des parcours professionnel, est ainsi modifié :", '002': 'A. - Au tableau du I :', '003': '1° La deuxième ligne est supprimée ;', '004': '2° A la troisième ligne, colonne C, le montant : "571 000" est remplacé par le montant : "476 800" ;', '005': '3° A la quatrième ligne, colonne C, le montant : "735 000" est remplacé par le montant : "1 076 377" ;', '006': '4° A la cinquième ligne, colonne C, le montant : "2 300 000" est remplacé par le montant : "2 105 000" ;', '007': '5° La septième ligne est supprimée ;', '008': '6° A la douzième ligne, colonne C, le montant : "70 000" est remplacé par le montant : "65 000" ;', '009': '7° A la vingt-cinquième ligne, colonne C, le montant : "1 615" est remplacé par le montant : "1 515" ;', '010': '8° A la vingt-sixième ligne, colonne C, le montant : "1 615" est remplacé par le montant : "1 515" ;', '011': '9° A la vingt-septième ligne, colonne C, le montant : "190 000" est remplacé par le montant : "188 000" ;', '012': '10° A la trente-sixième ligne, colonne C, le montant : "44 600" est remplacé par le montant : "34 600" ;', '013': '11° A la trente-septième ligne, colonne C, le montant : "159 000" est remplacé par le montant : "73 844" ;', '014': '12° La trente-huitième ligne est supprimée ;', '015': '13° A la trente-neuvième ligne, colonne C, le montant : "40 900" est remplacé par le montant : "25 000" ;', '016': '14° A la quarante-cinquième ligne, colonne C, le montant : "376 117" est remplacé par le montant : "226 117" ;', '017': '15° A la quarante-sixième ligne, colonne C, le montant : "243 018" est remplacé par le montant : "203 149" ;', '018': '16° Après la quarante-sixième ligne, il est inséré une ligne ainsi rédigée :', '019': '"'})
>>> [(art['titre'], art['alineas']) for art in articles if art['type'] == 'article'][18]
('L. 6331-50 du code du travail Chambres des métiers', {'001': '"', '002': '17° A la cinquante-et-unième ligne, colonne C, le montant : "4 000" est remplacé par le montant : "5 000" ;', '003': '18° A la cinquante-cinquième ligne, colonne C, le montant : "17 924" est remplacé par le montant : "14 970" ;', '004': '19° A la cinquante-septième ligne, colonne C, le montant : "83 700" est remplacé par le montant : "56 500" ;', '005': '20° A la cinquante-neuvième ligne, colonne B, les mots : "Poitou-Charentes" sont remplacés par les mots :', '006': '"Nouvelle-Aquitaine" et colonne C, le montant : "9 890" est remplacé par le montant : "25 500" ;', '007': '21° A la soixantième ligne, colonne B, les mots : "de Languedoc-Roussillon" sont remplacés par les mots :', '008': '"d\'Occitanie" et colonne C, le montant : "19 231" est remplacé par le montant : "33 000" ;', '009': '22° A la soixante-quatrième ligne, colonne C, le montant : "3 000" est remplacé par le montant : "3 500" ;', '010': '23° A la soixante-cinquième ligne, colonne C, le montant : "125" est remplacé par le montant : "400" ;', '011': '24° Après la soixante-sixième ligne, sont insérées deux lignes ainsi rédigées :', '012': '"'})
>>> [(art['titre'], art['alineas']) for art in articles if art['type'] == 'article'][19]
("de l'artisanat 39 869", {'001': '"', '002': '17° A la cinquante-et-unième ligne, colonne C, le montant : "4 000" est remplacé par le montant : "5 000" ;', '003': '18° A la cinquante-cinquième ligne, colonne C, le montant : "17 924" est remplacé par le montant : "14 970" ;', '004': '19° A la cinquante-septième ligne, colonne C, le montant : "83 700" est remplacé par le montant : "56 500" ;', '005': '20° A la cinquante-neuvième ligne, colonne B, les mots : "Poitou-Charentes" sont remplacés par les mots :', '006': '"Nouvelle-Aquitaine" et colonne C, le montant : "9 890" est remplacé par le montant : "25 500" ;', '007': '21° A la soixantième ligne, colonne B, les mots : "de Languedoc-Roussillon" sont remplacés par les mots :', '008': '"d\'Occitanie" et colonne C, le montant : "19 231" est remplacé par le montant : "33 000" ;', '009': '22° A la soixante-quatrième ligne, colonne C, le montant : "3 000" est remplacé par le montant : "3 500" ;', '010': '23° A la soixante-cinquième ligne, colonne C, le montant : "125" est remplacé par le montant : "400" ;', '011': '24° Après la soixante-sixième ligne, sont insérées deux lignes ainsi rédigées :', '012': '"'})
>>> [(art['titre'], art['alineas']) for art in articles if art['type'] == 'article'][20]
('L. 6331-50 du code du travail', {'001': "II de l'article L. 561-3", '002': "Fonds d'assurance formation des chefs d'entreprise inscrits au répertoire des métiers mentionné au III de l'article 8 de l'ordonnance", '003': 'n° 2003-1213 du 18 décembre 2003', '004': 'Fonds de prévention des risques', '005': '54 000', '006': "du code de l'environnement", '007': 'naturels et majeurs 137 000', '008': '"', '009': '25° La soixante-neuvième ligne est supprimée ;', '010': '26° A la soixante-dixième ligne, colonne C, le montant : "528 000" est remplacé par le montant : "798 000" ;', '011': '27° A la soixante-dix-huitième ligne, colonne C, le montant : "166 066" est remplacé par le montant : "86 400" ;', '012': '29° A la soixante-dix-neuvième ligne, colonne C, le montant : "559" est remplacé par le montant : "709" ;', '013': '30° A la quatre-vingt-quatrième ligne, colonne C, le montant : "385 000" est remplacé par le montant : "395 000" ;', '014': '31° A la quatre-vingt-sixième ligne, colonne C, le montant : "66 000" est remplacé par le montant : "67 000" ;', '015': '32° A la quatre-vingt-septième ligne, colonne C, le montant : "132 844" est remplacé par le montant : "127 800".', '016': 'B. - Au III bis, les mots : "aux versements mentionnés au V des articles L. 213-9-2 et" sont remplacés par les mots :', '017': '"au versement prévu à l\'article".', '018': 'II. - Le code général des impôts est ainsi modifié :', '019': "1° Le XIII de l'article 235 ter ZD est abrogé ;", '020': "2° L'article 1601 A est abrogé ;", '021': "3° Les deuxième et troisième phrases du troisième alinéa de l'article 1609 novovicies sont supprimées.", '022': "III. - La deuxième phrase du 1° du II de l'article L. 435-1 du code de la construction et de l'habitation est remplacée par la phrase suivante :", '023': '"A compter de 2018, cette fraction est fixée à 375 M€".', '024': "IV. - Le code de l'environnement est ainsi modifié :", '025': "1° L'article L. 131-5-1 est abrogé ;", '026': '2° La première phrase du II de l\'article L. 561-3 est complétée par les dispositions suivantes : ", dans la limite du plafond prévu au I de l\'article 46 de la loi n° 2011- 1977 de finances pour 2012."', '027': "V. - L'article L. 6331-50 du code du travail, dans sa rédaction résultant de l'article 41 de la loi n° 2016-1088 du", '028': '8 août 2016 relative au travail, à la modernisation du dialogue social et à la sécurisation des parcours professionnel est ainsi rédigé :', '029': '"Art. L. 6331-50. - La contribution mentionnée au 1° de l\'article L. 6331-48 est versée à un fonds d\'assurance- formation de non-salariés.', '030': '"La contribution mentionnée au a du 2° de l\'article L. 6331-48 est affectée aux chambres mentionnées au a de l\'article 1601 du code général des impôts dans la limite d\'un plafond individuel fixé de façon à respecter le plafond général prévu au I de l\'article 46 de la loi n° 2011-1977 du 28 décembre 2011 de finances pour 2012 pour les actions de formation financées par les chambres des métiers et de l\'artisanat.', '031': '"Ce plafond individuel est obtenu, pour chacun de ces bénéficiaires, en répartissant le montant prévu au I de l\'article 46 de la loi n° 2011-1977 du 28 décembre 2011 précitée au prorata des appels des contributions mentionnées à l\'alinéa précédent émis l\'année directement antérieure auprès des travailleurs indépendants situés dans le ressort géographique de chaque bénéficiaire.', '032': '"La contribution mentionnée au b du 2° de l\'article L. 6331-48 est affectée, dans la limite du plafond prévu au I de l\'article 46 de la loi n° 2011-1977 du 28 décembre 2011 de finances pour 2012, au fonds d\'assurance formation des chefs d\'entreprise mentionné au III de l\'article 8 de l\'ordonnance n° 2003-1213 du 18 décembre 2003 relative aux mesures de simplification des formalités concernant les entreprises, les travailleurs indépendants, les associations et les particuliers employeurs.', '033': '"Les sommes excédant le plafond mentionné au deuxième alinéa sont reversées au budget général de l\'État avant le', '034': '31 décembre de chaque année."'})
I guess it is related to the fact the line is weirdly formated on the AN end and starts with Article L. 6331-50 du code du travail Chambres des métiers et de l’artisanat 39 869
which is interpreted as a whole new article.
I will try to provide a fix for that very particular case.