Je suis incroyablement nouveau à Python, donc je n'ai peut-être pas la bonne terminologie ...
J'ai extrait du texte d'un fichier PDF à l'aide de PDFPLumber. Cela a été enregistré comme un objet. Le code que j'ai utilisé est: p> donc "cloche" est tout le texte de la première page du PDF importé.
quelle sonnerie ressemble à j'ai besoin d'écrire tout ce texte comme une chaîne à un CSV . J'ai essayé d'utiliser: p> et p> tout ce que je continue à trouver quand je cherche ceci est comment créer un CSV avec caractères ou chiffres spécifiques, mais rien d'une sortie d'un code déjà exécuté. Par exemple, je peux obtenir le code ci-dessus: p> pour créer un CSV qui a "cloche" dans une cellule de la CSV, mais c'est aussi proche que je peux obtenir.
Je me sens comme ça devrait être super facile, mais je ne peux tout simplement pas sembler de le faire fonctionner.
Des pensées?
S'il vous plaît et merci d'avoir aidé mon auto inexpérimenté. P> p>
3 Réponses :
Le CSV Votre problème principal est une inadéquation de type, vous essayez d'écrire une seule chaîne dans laquelle une liste des chaînes est attendue. Vous aurez besoin d'optimiser davantage sur votre objet code> cloche code> pour le convertir en format acceptable pour être écrit sur un CSV. p>
sans avoir la connaissance de ce que page.extract_text () code> est défini comme suit: "rassemble tous les objets de caractère de la page dans une seule chaîne." qui ferait
cloche code> juste une très longue chaîne. p>
écrivirowow () code> attend par défaut une liste des chaînes, avec chaque élément de la liste correspondant à une seule colonne. p>
cloche code> contient ou ce que vous avez l'intention d'écrire, je ne peux pas obtenir plus précis, mais la documentation sur le module CSV de Python est très complète en termes de délimiteurs de paramètres, de dialectes , les définitions de colonne, etc. Une fois que vous avez converti
Bell code> dans une approche appropriée des listes de chaînes, vous pouvez ensuite l'écrire à un CSV. p>
Je suis retourné et j'ai ajouté un screencap de quelle "cloche" ressemble à. C'est très long depuis que tout est tout le texte de la première page, alors je l'ai recadré.
Et cette capture d'écran ne fait que renforcer que cloche code> est une chaîne géante. Ce qui est également manquant, c'est ce que vous attendez. Votre CSV est-il destiné à avoir une seule ligne avec une seule colonne contenant la valeur de
cloche code>? Si tel est le cas, alors
file_writer.writerow ([Bell]) code> avec les guillemets retirés et que vous avez terminé. Si votre structure de CSV finale prévue est plus complexe, vous devrez définir cette structure et manipuler
cloche code> dans un python correspondant itéroureux avant d'écrire sur CSV. Une liste par ligne, un élément de liste par colonne.
D'accord, ça fait beaucoup plus de sens. Je devrai avoir des éclaircissements sur ce que je dois faire avec les CSV. (J'apprends cette technique pour ma thèse, mais sans une formation réelle, c'est une situation "apprendre comme y allue" pour moi.) Merci de m'avoir aidé, vraiment.
FWIW Vous pouvez probablement mieux comprendre cela en expérimentant l'opération en sens inverse. Prenez n'importe quelle feuille de calcul et exportez-la comme CSV. Utilisez le lecteur de CSV de Python pour lire le fichier dans la sortie par défaut (liste des listes) et inspecter la page, à la fois au niveau de la ligne et dans l'ensemble. Lorsque vous voyez ce que Python sortit chaque ligne comme par rapport au CSV d'origine, vous serez en mesure de modéliser ce que l'auteur attend lorsque vous souhaitez écrire vos données.
Un code similaire que j'ai écrit convertit récemment un fichier séparé à l'onglet en CSV pour l'insertion dans la base de données SQLITE3:
Peut-être que cela est utile: p>
retval = '' mode = 'r' out_file = os.path.join('input', 'listfile.csv') """ Convert tab-delimited listfile.txt to comma separated values (.csv) file """ in_text = open(listfile.txt, 'r') in_reader = csv.reader(in_text, delimiter='\t') out_csv = open(out_file, 'w', newline='\n') out_writer = csv.writer(out_csv, dialect=csv.excel) for _line in in_reader: out_writer.writerow(_line) out_csv.close()
Mais op ne lis pas d'un CSV donc cela ne s'applique probablement pas. De côté, vous pourriez out_writer.writerws (in_reader) code> et éviter le "pour.
Donc, mon problème était que je manquais le "codage =" utf-8 "" pour des caractères spéciaux et mon délimiteur doit être un espace au lieu d'une virgule. Ce qui a fini par travail était: Cependant, car beaucoup de mes fichiers PDF n'étaient pas vrais PDF mais scanns, le CSV a fini par avoir beaucoup de symboles étranges. Cela a fonctionné pendant environ la moitié des PDF que j'ai. Si vous avez de vrais PDF, ce sera génial. Sinon, j'essaie actuellement de déterminer comment extraire tout le texte en Pandas Dataframe séparés par des en-têtes dans les PDF, car pdfminer extrait parfaitement tout le texte.
Merci pour tout le monde qui a aidé! P> p>
Nous ne savons pas ce que
cloche code> ressemble. Pouvez-vous publier ce que
impression (cloche) code> sortie? Ou, comme il est probable plus longtemps que nécessaire, une version parcourue?
Salut! J'ai ajouté une casquette d'écran de ce à quoi on ressemble
Cela ressemble à une seule chaîne multiligne. Pas un "Dataframe" (vous devez clarifier ce que c'est, le populaire
pandas.dataframe code> ou autre chose). CSV est pour les données de colonne et je ne vois rien de columinaire.
Merci pour cette clarification, j'ai corrigé mon message à dire objet au lieu de Dataframe.
@Dmm. Off-sujets, mais vous devriez réellement accepter la réponse de travail à votre question. C'est une simple courtoisie et juste comment ce site fonctionne
Merci, JVDV! Je l'ai corrigé. :)