quebra de linha Repressão na file.write
-
22-07-2019 - |
Pergunta
Ao escrever para um arquivo de texto, alguns dos casos file.write são seguidos por uma quebra de linha no arquivo de saída e outras não. I não quer quebras de linha, exceto quando eu digo a eles para ocorrer. 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
O que eu estou ausente?
Atualizar
Eu deveria ter tomado uma pista de como o código colado no SO. Por alguma razão, houve uma mistura de espaços e separadores na linha final, de tal forma que no TextMate que visualmente apareceu fora do "por palavra ...", mas ciclo o intérprete foi tratá-la como parte de esse ciclo. Converter espaços em tabulações resolveu o problema.
Obrigado por sua entrada.
Solução
file.write()
não acrescenta quaisquer novas linhas, se a cadeia que escrever não contém quaisquer \n
s.
Mas você forçar uma nova linha para cada palavra em sua lista de palavras usando out.write("\n")
, é isso que você quer?
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!
Talvez você recuado out.write("\n")
longe demais ???
Outras dicas
Você escreve uma linha pausas após cada palavra:
for word in wordlist:
...
out.write("\n")
São estas as quebras de linha que você está vendo, ou existem outros mais adicionais?
Você pode precisar executar uma strip()
em cada wc[word]
. Imprimindo um único item da wc
é provavelmente seria suficiente para determinar se já existem quebras de linha sobre os itens que área causando esse comportamento.
Ou isso ou o recuo em seu out.write("\n")
final é não fazer o que você pretendia fazer.
Eu acho que seu recuo é errado.
(também tomei a liberdade de fazer o seu se redundante cláusula e código mais legível:)
for doc,wc in wordcounts.items()
out.write(doc)
for word in wordlist:
out.write("\t%d" % wc.get(word,0))
out.write("\n")