Подавить перевод строки в файле.записать
-
22-07-2019 - |
Вопрос
При записи в текстовый файл часть файла удаляется.за экземплярами write в выходном файле следует разрыв строки, а за другими - нет.Я не надо нужны перерывы на линии, за исключением тех случаев, когда я прикажу им произойти.Код:
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
Что я упускаю из виду?
Обновить
Я должен был понять, как код был вставлен в SO.По какой-то причине в последней строке была смесь пробелов и табуляции, так что в TextMate это визуально появился вне цикла "for word ...", но интерпретатор обрабатывал его как часть этого цикла.Преобразование пробелов в табуляции решило проблему.
Спасибо за ваш вклад.
Решение
file.write()
не добавляет никаких новых строк, если строка, которую вы пишете, не содержит никаких \n
s.
Но вы вводите новую строку для каждого слова в вашем списке слов, используя out.write("\n")
, - это то, чего ты хочешь?
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!
Возможно, вы сделали отступ out.write("\n")
слишком далеко???
Другие советы
Вы пишете разрывы строк после каждого слова:
for word in wordlist:
...
out.write("\n")
Это те разрывы строк, которые вы видите, или есть еще дополнительные?
Возможно, вам потребуется выполнить strip()
на каждом wc[word]
.Печать одного элемента из wc
вероятно, этого было бы достаточно, чтобы определить, есть ли уже разрывы строк в тех элементах, которые вызывают такое поведение.
Либо это, либо отступ в вашем итоговом документе out.write("\n")
делает не то, для чего вы это задумали.
Я думаю, что ваш отступ неправильный.
(также я взял на себя смелость сделать ваше предложение if избыточным, а код более читабельным :)
for doc,wc in wordcounts.items()
out.write(doc)
for word in wordlist:
out.write("\t%d" % wc.get(word,0))
out.write("\n")