Pregunta

Al escribir en un archivo de texto, algunas de las instancias de file.write van seguidas de un salto de línea en el archivo de salida y otras no. no quiero saltos de línea excepto donde les digo que ocurran. Código:

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
        out.write("\n")        #this line had mixed spaces/tabs

¿Qué me estoy perdiendo?

Update

Debería haber tomado una idea de cómo se pegó el código en SO. Por alguna razón, hubo una mezcla de espacios y pestañas en la línea final, de modo que en TextMate visualmente apareció fuera del " por palabra ... " bucle, pero el intérprete lo estaba tratando como parte de ese bucle. Convertir espacios en pestañas resolvió el problema.

Gracias por su aporte.

¿Fue útil?

Solución

file.write () no agrega ninguna línea nueva si la cadena que escribe no contiene ningún \ n s.

Pero fuerza una nueva línea para cada palabra en su lista de palabras usando out.write (" \ n ") , ¿es eso lo que quiere?

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
            out.write("\n") #<--- NEWLINE ON EACH ITERATION!

Quizás haya sangrado out.write (" \ n ") demasiado lejos ???

Otros consejos

Escribe saltos de línea después de cada palabra:

for word in wordlist:
    ...
    out.write("\n")

¿Son estos los saltos de línea que está viendo, o hay más saltos adicionales?

Es posible que deba realizar una strip () en cada wc [word] . Es probable que imprimir un solo elemento desde wc sea suficiente para determinar si ya hay saltos de línea en esos elementos que causan este comportamiento.

O eso o la sangría en su out.write (" \ n ") final no está haciendo lo que usted pretendía.

Creo que tu sangría está mal.

(también me tomé la libertad de hacer que su cláusula if sea redundante y el código sea más legible :)

for doc,wc in wordcounts.items()
   out.write(doc)
   for word in wordlist:
     out.write("\t%d" % wc.get(word,0))
   out.write("\n")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top