Suprimir salto de línea en file.write
-
22-07-2019 - |
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.
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")