#python #csv #rows
#python #csv #строки
Вопрос:
Новичок в программировании здесь. Пройдя через Google и форумы (а также много проб и ошибок), я не смог найти аккуратного решения своей проблемы.
Я хотел бы удалить несколько начальных строк (первые 10 строк) в моей электронной таблице / файле CSV, и пока я нашел решение для этого, используя:
all(next(read) for i in range(10))
Похоже, что он не может удалить пустые строки в файле CSV, который у меня есть. Первые 10 строк, которые я хотел бы удалить, включают эти пустые строки. Я думаю, что приведенная выше строка удаляет строки, только если в них есть строки.
Мой полный код пока таков [EDIT1]: Может быть, это могло бы сработать?
import csv
with open('filename.csv') as csvfile:
non_blank_row=[]
filecsv = csv.reader(csvfile, delimiter=",")
for row in filecsv:
non_blank_row.append(row)
better_blank_row = non_blank_row[[i for i in range(len(non_blank_row)) if non_blank_row!=[]
[ПРАВКА2]: Когда я попытался напечатать (better_blank_row), я сделал:
for i in better_blank_row:
print(better_blank_row)
Однако я не уверен, почему вывод не выводится .. как будто оболочка просто зависает.
Любая помощь была бы высоко оценена!
Ответ №1:
Ваш цикл for просто повторяет filecsv. Это ничего не делает. Вы хотите что-то вроде
non_blank_rows = []
for row in filecsv:
if row: # empty strings are false-y
non_blank_rows.append(row)
Теперь на этом этапе вы могли бы просто установить filecsv в значение non_blank_rows. Обратите внимание, что более питоническим способом сделать все это, вероятно, было бы использовать понимание списка. Я бы написал синтаксис для этого, но если это то, о чем вы не слышали, возможно, вы захотите посмотреть их самостоятельно.
filecsv = [row for row in filecsv if row]
Комментарии:
1. Спасибо за ответ.
2. Мне было интересно, будет ли это лучше: с open(‘filename.csv’) как csv-файл non_blank_rows=[] filecsv = csv.reader(csv-файл, разделитель =»,») для строки в filecsv: non_blank_rows.append(строка) Затем, возможно, для удаления пустых строк: better_rows=non_blank_rows[[i для i в диапазоне (len( non_blank_row) если non_blank_row[i]!=[] или что-то в этом роде?
Ответ №2:
вы можете использовать как резерв для записи нового CSV-файла после удаления конкретной строки
import csv
#read csv file
csvfile = open('/home/17082016_ExpiryReport.csv', 'rb')
filecsv = csv.reader(csvfile, delimiter=",")
#following line increment pointer for blank line also up to range 10 lines
[next(filecsv) for i in range(10)]
#write csv file
with open('/home/17082016_ExpiryReport_output.csv', 'wb') as csvfile:
csvwriter = csv.writer(csvfile, delimiter=',')
[csvwriter.writerow(i) for i in filecsv ]