Удаление строк из csv с помощью Python также добавляет дополнительную строку

Этот код, заимствованный из другого места в stackoverflow, удаляет все места, в которых csv имеет «None». Однако он также добавляет дополнительную строку в csv. Как я могу изменить этот код, чтобы удалить эту дополнительную строку? Я думаю, что проблема вызвана inplace , но когда я беру на место, файл больше не изменяется, запустив код.

 def cleanOutputFile(filename): for line in fileinput.FileInput(filename,inplace=1): line = line.replace('None',"") print line 

Благодаря!

2 Solutions collect form web for “Удаление строк из csv с помощью Python также добавляет дополнительную строку”

Если вы хотите заменить все « None's :

 with open(filename) as f: lines = f.read().replace("None","") with open(filename,"w") as f1: f1.write(lines) 

Использование rstrip с fileinput также должно работать:

 import fileinput for line in fileinput.FileInput(fileinput,inplace=1): print line.replace('None',"").rstrip() # remove newline character to avoid adding extra lines in the output 

Проблема здесь не имеет ничего общего с fileinput или с replace .

Строки, считанные из файла, всегда заканчиваются в новой строке.

print добавляет новую строку, даже если то, что вы печатаете, уже заканчивается новой строкой.

Вы можете видеть это без участия файла:

 >>> a = 'abc' >>> print a abc >>> a = 'abc\n' >>> print a abc >>> 

Решением является любое из следующего:

  • rstrip строки с ввода: print line.rstrip('\n') (или сделать полосу раньше в вашей обработке)
  • Используйте «магическую запятую», чтобы предотвратить добавление print line, новой строки: print line,
  • Используйте Python 3-стиль print с from __future__ import print_function , поэтому вы можете использовать более гибкие аргументы ключевого слова: print(line, end='')
  • Вместо print используйте sys.stdout.write .
  • Полностью реорганизуйте свой код, чтобы вы больше не записывали на stdout, а вместо этого записывали непосредственно во временный файл или читали весь файл в памяти, а затем записывали его обратно и т. Д.
Python - лучший язык программирования в мире.