Limpiando archivo de texto de números para crear CSV
Así que estoy trabajando en un proyecto donde estoy convirtiendo archivos PDF a un archivo .txt, que estoy convirtiendo a un archivo CSV utilizando Python. Entonces, estoy trabajando con este PDF: https://secure.in.gov/dcs/files/AssessmentDecisions201301.pdf y convirtiéndolo a un archivo de texto utilizando un convertidor OCR en línea.
Aquí hay un fragmento de cómo se ve la información:
Abuso Sexual Abuso Físico Negligencia
Ubicación/
Región Total Su No Su Su No Su Su No Su
Estatal Total 250 1143 185 1882 1409 7280
Luego, lo que quiero hacer es convertirlo en un archivo CSV legible que se pueda utilizar para el análisis de datos.
Entonces, para leer mi archivo, este es el código que tengo:
nombre_archivo = "AssessmentDecisions2013-01.txt"
archivo = open(nombre_archivo, 'rt')
informacion = archivo.read()
archivo.close()
nuevo = informacion.split()
La razón por la que lo estoy dividiendo es porque la primera columna de los datos tiene todos los números que necesito, pero están separados por tabulaciones, así que estoy intentando separarlos en sus propias columnas. Sin embargo, al intentar dividir el archivo, este es el resultado que obtengo al usar print(nuevo)
:
['\xff\xfe', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00', '\x00']
Soy relativamente nuevo en la programación, así que no estoy seguro de cómo solucionar esto, pero básicamente solo estoy tratando de separar los diferentes números del informe en sus propias columnas.
Quiero que el archivo CSV ideal se vea así:
región | condado | asaltosub | asaltosno su |
---|---|---|---|
Estatal | Total | 250 | 1143 |
asaultsub | asaultno su | negligenciasub | negligenciano su |
---|---|---|---|
185 | 1882 | 1409 | 7280 |
Si alguien tiene algún consejo o sugerencia, ¡lo agradecería mucho! ¡Gracias!
davy.ai
Posible solución
Parece que el problema con la división del archivo está relacionado con la codificación del archivo de texto. Dado que mencionaste el uso de un convertidor OCR en línea, es posible que el archivo de texto resultante tenga una codificación diferente a la esperada por Python.
Una posible solución sería especificar la codificación al abrir el archivo. Por ejemplo, si el archivo de texto está codificado en UTF-8, puedes modificar tu código de la siguiente manera:
Esto te dará una lista de cadenas que puedes procesar más adelante para crear el archivo CSV deseado.
En cuanto a la creación del archivo CSV, una forma de abordarlo sería recorrer la lista de cadenas y extraer los datos relevantes para almacenarlos en un diccionario. Una vez que hayas recopilado todos los datos para una fila en particular, puedes agregar el diccionario a una lista de diccionarios. Por último, puedes usar el módulo
csv
para escribir la lista de diccionarios en un archivo CSV. Aquí tienes un ejemplo de implementación:Esto debería crear un archivo CSV con el formato deseado. Ten en cuenta que esta implementación asume que el archivo de texto de entrada tiene una estructura de datos consistente, donde las regiones y condados se enumeran en la primera columna y los datos correspondientes se encuentran en columnas subsecuentes separadas por tabuladores. Si la estructura varía, es posible que debas ajustar el código en consecuencia.