Fondamentalement, je fais des conversions de PDF en texte, puis j'analyse et clippe des parties de ce texte en utilisant une bibliothèque en Python. Le "clipping" de Python ne coupe pas le texte en fichiers séparés, il a simplement un caractère de début et une position de fin pour l'extraction de chaîne. Par exemple:Différence de codage C#/Python
the quick brown fox jumped over the lazy dog
Mon code python peut découper « rapide » en spécifiant 4, 9. Ensuite, je me sers C# pour un programme graphique et essayer de prendre ces valeurs affectées par Python, et il fonctionne ... pour la plupart. Il semble que le programme de reconnaissance optique de caractères qui a transformé le fichier pdf en un fichier texte incluait des caractères UTF impairs qui modifieraient les comptes du côté C#. Les caractères de conversion des caractères impairs PDF-TXT incluent un caractère "fi", au lieu d'un caractère "f" et "i" (éventuellement d'autres caractères, ce sont des fichiers volumineux). Cela ne poserait plus de problème , sauf que C# indique qu'il s'agit d'un caractère et que Python (ainsi que Notepad ++) considère ces 3 positions de caractères.
C#: "fi" longueur = 1 caractère.
Python/Notepad ++: longueur "fi" = 3 caractères.
Ce que cela finit par faire est de me donner un clip de décalage en raison de la différence de nombre de caractères. Comme je l'ai dit quand je l'ai exécuté en python (linux) et que j'ai essayé de sortir l'écrêtage parfait, j'ai ensuite transféré le fichier texte sur Windows et Notepad ++ confirme que ce sont les bonnes positions. C# compte vraiment le "fi" comme un caractère et Notepad ++ ainsi que Python compte comme 3 caractères pour une raison quelconque.
J'ai besoin d'un moyen de combler cette divergence du côté Python OU du côté C#.
En python J'utilise f = open (fichier) str = pour obtenir les emplacements f.read() puis str.find(), que l'habitude être une chaîne de caractères? – projectgonewrong
non, sera chaîne d'octets. – Daniel