Yo uso el siguiente segmento de código para leer un archivo en python:

with open ("data.txt", "r") as myfile:
    data=myfile.readlines()

Archivo de entrada es:

LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN
GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

y cuando me de la impresión de datos puedo obtener

['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN\n', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

Como puedo ver los datos en list forma. Cómo puedo hacer cadena? Y también, ¿cómo puedo quitar el "\n", "[", y "]" caracteres de ella?

  • Relacionados: Cómo leer un archivo línea por línea en una lista con Python
  • El título y la pregunta son inconsistentes. ¿Usted realmente quiere deshacerse de la \n así?
  • ¿realmente desea eliminar saltos de línea en el archivo/string contenido, o simplemente estás confundido acerca de los muchos meta-caracteres en la salida de impresión y realmente quieren mantener los saltos de línea, pero no tienen ellos de la pantalla como «\n»?
  • Para los que vienen aquí de un motor de búsqueda, usted está probablemente en busca de @xiaoyu la respuesta
InformationsquelleAutor klijo | 2011-12-03

22 Comentarios

  1. 1149

    Puede utilizar:

    with open('data.txt', 'r') as file:
        data = file.read().replace('\n', '')
    • Hay un inconveniente en el escrito sólo open("data.txt").read().replace('\n','') lugar?
    • Sí, su versión no explícitamente cerrar el archivo, que luego se retrasa hasta que el recolector de basura se ejecuta o el programa termina. El ‘con’ instrucción generalmente se encapsula algunos de instalación/desmontaje de apertura/cierre de las acciones.
    • Gracias por la aclaración. Por lo tanto, parece que mi versión podría estar bien para pequeños guiones – pero OTOH de preferencia, debe ser evitado para no convertirlo en un hábito.
    • es un enorme pan de PITA de la prueba/el proceso de depuración, como no limpiar los identificadores de archivo abierto si tiene que terminar antes de tiempo o que se ejecuta en una excepción.
    • que replace('\n','') podría ser simplemente rstrip('\n')
    • No, rstrip('\n') sólo quitar el caracter de la última línea, replace('\n','') elimina todas partes (esencialmente haciendo que todo el archivo de una sola línea)
    • No es necesario el estado de la "r" explícitamente, como es el valor predeterminado para el mode opción (pero que podría ser bueno para la aclaración).
    • -1 porque el replace('\n') va a cambiar el formato de los datos de entrada. xiaoyu la respuesta es más precisa. (El \n y [] sólo aparecen debido a la utilización de readline().)
    • Usted se equivoca, el \n (carácter de nueva línea) figura en la entrada. readlines() se divide en las apariciones de ella, pero deja intacto.
    • De hecho en mi comentario entre paréntesis es mal redactadas, pero ese es precisamente mi punto : el OP no realmente quiere deshacerse de ellos. Véase también Alex Dupuy comentario a xiaoyu la respuesta.
    • esta pregunta/respuesta filas muy alto en los motores de búsqueda para la gente que busca para leer un archivo en una cadena. por desgracia, este fragmento hace algo más/destructs saltos de línea. probablemente no por despecho, sino simplemente porque el autor original de la pregunta es un poco confundido acerca de los meta-caracteres en su salida… PERO ESTO PROBABLEMENTE NO ES lo que la mayoría de la gente que busca def as_string(filepath) está buscando!
    • Puedo acceder a los datos cuando el archivo está cerrado? Si no me guión data bajo with?

  2. 571

    uso leer(), no readline()

    with open('data.txt', 'r') as myfile:
      data = myfile.read()
    • Tal vez, pero no tira saltos de línea como el OP quería. Me sigue gustando, aunque.
    • Si se devuelve una cadena única, despojando a saltos de línea no tiene ningún sentido – el OP debe elegir una cadena o despojado \n el caso de las cadenas en la lista.
    • Funciona, pero no los archivos Unicode. Para apoyar utf8 en python3, el uso de un argumento extra encoding="utf-8"
  3. 60

    Usted puede leer desde un archivo en una sola línea:

    str = open('very_Important.txt', 'r').read()

    Por favor, tenga en cuenta que esto no cierra el archivo de forma explícita.

    CPython se cierre el archivo cuando sale de la misma como parte de la recolección de basura.

    Pero otras implementaciones python no. Para escribir el código portable, es mejor utilizar with o cerrar el archivo de forma explícita. Corto no es siempre lo mejor. Ver https://stackoverflow.com/a/7396043/362951

    • Esto es anti-idiomáticas y no se recomienda. open debe ser utilizado dentro de un with ... as declaración.
    • puede usted explicar el problema ? Se trata simplemente de una cuestión de costumbre o no la with ... as declaración de traer algo ?
    • el problema es que se abren.leer() no cerrar el archivo, así que necesitamos with ... as o str.close() como se demuestra en la respuesta de Pedro. Más sobre la importancia de cierre de archivos aquí
    • Este modismo claramente elimina una fuente de error. Gracias !
    • esto también es malo, porque usted acaba de sombreado str() de builtins
  4. 48

    La recomienda forma, el uso de with :

    with open('data.txt') as f:
        text = f.read() # All lines into a string
        #text = " ".join([x.strip() for x in f]) # Join all lines into a string and remove line breaks

    La clásico manera:

    file = open('data.txt', encoding='utf8')
    text = file.read().strip()
    file.close()

    Nota: with cierra el archivo automágicamente.

  5. 29
    with open("data.txt") as myfile:
        data="".join(line.rstrip() for line in myfile)

    join() se unirá a una lista de cadenas, y rstrip() sin argumentos recortar los espacios en blanco, incluyendo saltos de línea, desde el final de las cadenas.

  6. 29

    En Python 3.5 o posterior, con pathlib puede copiar contenidos de archivo de texto en una variable y cierre el archivo en una línea:

    from pathlib import Path
    txt = Path('data.txt').read_text()

    y, a continuación, puede utilizar str.reemplazar para eliminar los saltos de línea:

    txt = txt.replace('\n', '')
  7. 11

    Esto se puede hacer usando el método read ():

    text_as_string = open('Your_Text_File.txt', 'r').read()

    O como el modo por defecto en sí es » r » (read) así que simplemente utilice,

    text_as_string = open('Your_Text_File.txt').read()
  8. 9

    He moví un poco con esto por un tiempo y se han prefieren usar read en combinación con rstrip. Sin rstrip("\n"), Python añade una nueva línea al final de la cadena, que en la mayoría de los casos no es muy útil.

    with open("myfile.txt") as f:
        file_content = f.read().rstrip("\n")
        print file_content
  9. 6

    Es difícil decir exactamente lo que buscas, pero algo como esto debe comenzar:

    with open ("data.txt", "r") as myfile:
        data = ' '.join([line.replace('\n', '') for line in myfile.readlines()])
    • readlines? ick.
    • reducir(lambda x,y : x+y.rstrip(‘\n’), [un ‘\n’, «b\n», ‘c’], «») es una mucho mejor 😀
    • ¿qué sugeriría usted?
    • data = ' '.join(line.replace('\n', '') for line in myfile) o MagerValp de la versión.
  10. 4

    Esta es una línea, copia de pasteable solución que también se cierra el objeto de archivo:

    _ = open('data.txt', 'r'); data = _.read(); _.close()
  11. 4

    Usted puede también tira de cada línea y concatenar en una final de la cadena.

    myfile = open("data.txt","r")
    data = ""
    lines = myfile.readlines()
    for line in lines:
        data = data + line.strip();

    Esto también funcionaría bien.

    • Se puede omitir la r, «la lectura» es el modo predeterminado.
    • Gracias Pedro. Acabo de añadir que para el bien de la inteligencia.
  12. 2
    f = open('data.txt','r')
    string = ""
    while 1:
        line = f.readline()
        if not line:break
        string += line
    
    f.close()
    
    
    print string
    • Los bucles que tienen un string += line debe ser evitado. Algunas versiones de Python puede administrar para evitar O(n^2) comportamiento de aquí, pero ninguna de las otras respuestas que se han dado son mejores que este. También usted no eliminar el salto de línea que se solicitó, por lo que su código es simplemente una manera muy lenta, de hacer string = f.read()
    • Gracias por la corrección de mí. Pero una pequeña cosa es que no tengo ni para quitar la nueva línea, porque cuando he probado, no print ‘\n’ fuera. @Duncan
  13. 2

    Me sorprende que nadie menciona splitlines() todavía.

    with open ("data.txt", "r") as myfile:
        data = myfile.read().splitlines()

    Variable data es ahora una lista parecida a esta cuando se imprimen:

    ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

    Nota: no hay ningún salto de línea (\n).

    En ese punto, parece que quieres imprimir las líneas de la consola, que se puede lograr con un bucle for:

    for line in data:
        print line
  14. 2

    puede comprimir en uno en dos líneas de código!!!

    content = open('filepath','r').read().replace('\n',' ')
    print(content)

    si el archivo se lee:

    hello how are you?
    who are you?
    blank blank

    python salida

    hello how are you? who are you? blank blank
  15. 1

    No creo que a nadie se dirigió a la [ ] parte de su pregunta. Cuando usted lee cada línea en la variable, ya que hay varias líneas antes ha sustituido el \n con » se acabó creando una lista. Si usted tiene una variable de x e imprimir sólo por

    x

    o imprimir(x)

    o str(x)

    Verá la lista completa con los soportes. Si usted llama a cada elemento de la (matriz de clases)

    x[0]
    a continuación, se omite el paréntesis. Si utiliza el str() función que va a ver sólo los datos y no el » bien.
    str(x[0])

  16. 1

    python3: Google «lista comphrension» si el corchete de la sintaxis es nuevo para usted.

     with open('data.txt') as f:
         lines = [ line.strip( ) for line in list(f) ]
  17. 1

    ¿Has probado esto?

    x = "yourfilename.txt"
    y = open(x, 'r').read()
    
    print(y)
    • Esto es incorrecto. Desea y = open(x, ‘r’).leer() si vas a hacerlo de esa manera.
  18. 0

    Esto funciona:
    Cambio su archivo:

    LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE

    A continuación:

    file = open("file.txt")
    line = file.read()
    words = line.split()

    Esto crea una lista con nombre words que equivale a:

    ['LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN', 'GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE']

    Que se había librado de la «\n». Para responder a la parte de los soportes de ponerse en tu camino, basta con hacer:

    for word in words: # Assuming words is the list above
        print word # Prints each word in file on a different line

    O:

    print words[0] + ",", words[1] # Note that the "+" symbol indicates no spaces
    #The comma not in parentheses indicates a space

    Devuelve:

    LLKKKKKKKKMMMMMMMMNNNNNNNNNNNNN, GGGGGGGGGHHHHHHHHHHHHHHHHHHHHEEEEEEEE
    • Cambiar el archivo que podría trabajar en una sola situación, pero si usted tiene cientos de archivos, esta no es una solución viable.
  19. 0
    with open(player_name, 'r') as myfile:
     data=myfile.readline()
     list=data.split(" ")
     word=list[0]

    Este código le ayudará a leer la primera línea y, a continuación, utilizando la lista y la opción de dividir usted puede convertir la primera palabra de la línea separados por un espacio para ser almacenados en una lista.

    Que usted puede tener acceso fácilmente a cualquier palabra, o incluso almacenar en una cadena.

    También puede hacer lo mismo con el uso de un bucle for.

  20. 0
    file = open("myfile.txt", "r")
    lines = file.readlines()
    str = ''                                     #string declaration
    
    for i in range(len(lines)):
        str += lines[i].rstrip('\n') + ' '
    
    print str
  21. 0

    Tal vez usted podría tratar esto? Yo uso este en mis programas.

    Data= open ('data.txt', 'r')
    data = Data.readlines()
    for i in range(len(data)):
        data[i] = data[i].strip()+ ' '
    data = ''.join(data).strip()
  22. 0

    Expresión Regular también:

    import re
    with open("depression.txt") as f:
         l = re.split(' ', re.sub('\n',' ', f.read()))[:-1]
    
    print (l)

    [‘I’, ‘sentir’, ‘vacío’, ‘y’, ‘los muertos’, ‘dentro’]

Dejar respuesta

Please enter your comment!
Please enter your name here