Tengo un archivo de texto, que es de alrededor de 400.000 líneas de largo. Necesito importar este archivo de texto en un programa que sólo acepta archivos de texto delimitados por espacios o tabuladores, pero este archivo de texto delimitado con comas. No hay ninguna opción en el programa yo soy de exportar el archivo de texto (Arcmap) para cambiar el delimination y haciendo buscar y reemplazar en el archivo de texto en sí, literalmente, tomar 2 días.

He buscado un script para hacer esto, pero todos ellos parecen reemplazar toda la LÍNEA del archivo de word con un espacio, en lugar de individualmente colocación de cada semi-colon, Salir de mí con un archivo de texto vacío.

Aquí es una muestra de mi archivo de texto:

"OID_";"POINTID";"GRID_CODE";"POINT_X";"POINT_Y"
;1;-56.000000;200900.250122;514999.750122
;2;-56.000000;200900.750122;514999.750122
;3;-56.000000;200901.250122;514999.750122
;4;-57.000000;200901.750122;514999.750122
;5;-57.000000;200902.250122;514999.750122
;6;-57.000000;200902.750122;514999.750122
;7;-57.000000;200903.250122;514999.750122
;8;-57.000000;200903.750122;514999.750122
;9;-57.000000;200904.250122;514999.750122
;10;-57.000000;200904.750122;514999.750122

Necesito que se vea algo como esto:

1 -56.000000 200900.250122 514999.750122
2 -56.000000 200900.750122 514999.750122
  • Alice, por favor, edita tu pregunta para mostrar (1) las primeras líneas de su archivo (2) ¿cuál de las líneas debe verse como después de la fijación. Estoy bastante seguro de que podemos ayudar, pero tenemos que saber exactamente lo que usted necesita hacer. También, Python 2.x o 3.X?
  • Necesito una solución python porque hacerlo con el «buscar reemplazar todo» funcion en el bloc de notas hace que mi ordenador para compust!
  • Juan, voy a editar ahora.. se tarda unos 10 minutos para abrir el archivo, aunque!!
  • Alice, (1) por FAVOR respuesta: Python 2.X o 3.X? (2) por Favor, inicie OTRA pregunta con el archivo cambiar el nombre de problema (y eliminar de esta pregunta)
  • Alice, ¿estás SEGURO de que hay DOS registros lógicos por línea??? ¿Cuál es el significado de los principales ;?? Hay, de hecho, los saltos de línea en todos los???
  • también estoy usando python 2.5!
  • Lo siento, he cambiado en el código y ahora su más legible!
  • Alice, estoy muy dudoso acerca de que la estructura del archivo. Por favor, abra una Ventana del Símbolo del sistema (estoy asumiendo que usted está utilizando Windows) y ejecute este comando ===>>> c:\wherever\python25 -c «imprimir repr(open(‘su.archivo, ‘rb’).leer(300))» <<<=== Esto imprimirá una clara representación de los 300 primeros bytes del archivo, por lo que podemos ver exactamente lo que está en él. Por favor, cuidado con copiar/pegar el texto de la salida (NO una captura de pantalla) en una edición de su pregunta.
  • Alice, he visto el «transformado en código de» cosas y todavía estoy dudosa. Por favor hacer los 300 bytes volcado a lo solicitado.
  • El archivo se exporta desde ArcMap – es un atributo de la tabla con columnas! eumiro la respuesta resuelto mi problema, aunque! Pero si la estructura del archivo de ser algo que me debería preocupar?
  • Se ve loco: DOS registros en cada línea de lo que mostró, y cada línea después de la primera comienza con un ;. Has probado a importar el archivo de salida en el que sólo le gusta-espacio-o-ficha del programa?
  • sí, simplemente no puedo leer y tirar un error! Yo no creo que hay 2 registros en cada línea, cada línea representa un punto, que tiene un número, un valor de Z, un X y un valor de Y! Jaja! Yo no tengo mucha experiencia con CUALQUIER otro tipo de archivo, así que supongo que no parece normal para mí!
  • también creo que cada línea comienza con una ; porque se piensa que hay un registro de enfrente de lo que no está allí por alguna razón!

InformationsquelleAutor Alice Duff | 2011-01-20

3 Comentarios

  1. 32

    Cómo sobre esto:

    sed -i 's/;//g' yourBigFile.txt

    Esto no es una solución Python. Usted tiene que comenzar esta en un shell. Pero si uso el Bloc de notas, supongo que estás en Windows. Así que aquí una solución Python:

    f1 = open('yourBigFile.txt', 'r')
    f2 = open('yourBigFile.txt.tmp', 'w')
    for line in f1:
        f2.write(line.replace(';', ' '))
    f1.close()
    f2.close()
    • simplemente copia este directamente en python? ¿Tengo que escribir nada en frente de ella (lo siento por mi completa inutilidad!)
    • He añadido una solución Python para usted
    • Obtengo el error: Mensaje de Nombre de Archivo de Posición de la Línea de Rastreo <módulo> C:\Documents and Settings\DuffA\Mijn documenten\Downloads\search_replace.py 6 AttributeError: ‘archivo’ el objeto no tiene ningún atributo ‘reemplazar’
    • lo siento, fijo.
    • oh mi dios funcionó!!! Gracias!!!!!!!
    • Este es mejor: stackoverflow.com/questions/25940101/…

  2. 20

    con Python, puede utilizar fileinput.

    import fileinput
    for line in fileinput.FileInput("file",inplace=1):
        line = line.replace(";"," ")
        print line,

    esto reemplazará todos tus «;» a los espacios en el lugar.

    • Que añade un extra de salto de línea después de cada línea para mí en Windows.
    • Yo he sugerido una edición para solucionar ese problema.
    • El archivo debe ser cerrado.
    • Esto resuelve el extra problema en la línea: stackoverflow.com/questions/25940101/…
  3. 4

    Python 3.2 tiene añadida la capacidad para utilizar esto como contexto de administrador, por lo que los archivos que fallan durante el procesamiento, por alguna razón, siempre cerrado:

    import fileinput
    def main():
        with fileinput.input(inplace=True) as f:
            for line in f:
                line = line.replace(";", " ")
                print(line, end='')

    (la inspiración)

    Utilizar suministra con el archivo de texto que se desea procesar.

    • Tshepang Lo que hace esta línea de hacer? de impresión(línea end=»)
    • «insertar una cadena vacía al final de la línea, en lugar de la habitual \n carácter»

Dejar respuesta

Please enter your comment!
Please enter your name here