Удаление строк из 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, а вместо этого записывали непосредственно во временный файл или читали весь файл в памяти, а затем записывали его обратно и т. Д.
  • Проверьте, имеет ли файл формат CSV с Python
  • Как разбить строку CSV так, что строка - это имя, а остальные элементы - кортеж?
  • Python Разрешение отклонено:
  • str для ошибки при загрузке csv python
  • двойные кавычки в csv can not read with pandas
  • Pandas read_csv игнорирует столбцы dtypes при передаче skip_footer arg
  • Изменить регистр первой буквы в каждой ячейке таблицы
  • улучшить отображаемые lambdas в Python (панды)
  • Python, добавление печатного вывода в файл excel
  • Python MySQL CSV экспортирует в json странную кодировку
  • Строка csv Python для массива
  • Python - лучший язык программирования в мире.