Python csv удаление строки

Удаление столбцов и строчек в csv

Здравствуйте!
Подскажите пожалуйста как удалить первые три столбца и определенные строки, разделенные запятыми, в csv файле?
Названия столбцы не имеют.

Удаление строчек и столбцов матрицы заполненных только отрицательными элементами
Здравствуйте! Помогите пожалуйста заставить программу работать правильно! Задание: удалять со.

Размножить .csv файл с заменой 2 строчек
Камрады! Имеется .csv вот такой структуры LOT 22137D4UQV OPERATION T32-TEST-1-AMB 10 0.

Вывести номера строчек и столбцов
1. Дана квадратная целочисленная матрица С. Если в ней есть строки, со-стоящие из нулей, то.

Удаление строчек
Будьте добры, помогите новичку! Надо написать макрос, чтобы не листе удалялись строчки, в которыхь.

Читаешь файл, каждую строку перегоняешь в массив (через split или csv reader), берешь от этих массивов слайсы ([3:]), записываешь в файл (‘,’.join(row))

alex white, а можно пример кода.

Добавлено через 30 минут

with open('file.csv') as csvfile: csvv = csv.reader(csvfile, delimiter=',', quotechar='"') for row in csvv: print(','.join(row[3:]).split(")

Эксперт С++

ЦитатаСообщение от New Life Посмотреть сообщение

Здравствуйте!
Подскажите пожалуйста как удалить первые три столбца и определенные строки, разделенные запятыми, в csv файле?
Названия столбцы не имеют.

Создаешь новый файл, читаешь старый и из него копируешь в новый то что интересует. Когда все завершил закрываешь файлы, удаляешь старый, переименовываешь новый.

Avazart, да, это все очевидно, вопрос был в другом.

Добавлено через 19 часов 41 минуту
alex white, как теперь удалить лишние строки в csv файле?

если данные в формате
_запятая_табуляция_значение_запятая

то выбираете первые три и удаляете, по строчно
пишите в НОВЫЙ файл

если данные в формате
_запятая_пробел_значение_запятая

то это сложнее =) так как в данных (если) встречаются фразы, могут возникать сложности и лучше разделитель делать запятую

Эксперт С++

Эксперт Python

ЦитатаСообщение от New Life Посмотреть сообщение

Ну реально — все ж уже рассказали.

with open("test2.csv",newline='') as source,open("test22.csv", "w", newline='') as dest: reader = csv.reader(source, delimiter=';') writer = csv.writer(dest,delimiter=';') #for _ in range(3): next(reader) # так можно пропускать строки с начала файла в нужном количестве skip_lines = [1,4,6] # пропускаем выборочно: 1 4 и 6 строку for line,row in enumerate(reader,1): if line in skip_lines: continue writer.writerow(row[3:]) # пропускаем первые три столбца каждой строки

http://python.su/forum/topic/33192/?page=3 http://python.su/forum/topic/3. ost-181554 и ниже разбирали экспорт товаров из 1С из убитой вирусом базы
там ребята помогли собрать все в csv а затем обработать csv

примерно то же самое =) и у вас

Как сделать нумерацию столбцов и строчек в шахматной доске?
Вот код: import tkinter as tk number_of_rows = number_of_columns = int(input("Введите.

Удаление строчек из модели
Представим ситуацию — есть 10 предметов. Список этих предметов хранится в БД. Моя задача в том.

Удаление строчек с реестра
доброго времени суток. подскажите плз, как удалить определенное значене try

Найти наименьший элемент в каждой строчке таблицы, 10 строчек, 20 столбцов
Помогите найти наименьший элемент в каждой строчке таблицы, 10 строчек, 20 столбцов

Удаление ненужных строчек из файла
Создал такую програму, она должна удалять коментари из кода с++ который записаный в файле.

Источник

Deleting rows with Python in a CSV file

All I would like to do is delete a row if it has a value of ‘0’ in the third column. An example of the data would be something like:

So the first row would need to be deleted whereas the second would stay. What I have so far is as follows:

import csv input = open('first.csv', 'rb') output = open('first_edit.csv', 'wb') writer = csv.writer(output) for row in csv.reader(input): if row[2]!=0: writer.writerow(row) input.close() output.close() 

3 Answers 3

You are very close; currently you compare the row[2] with integer 0 , make the comparison with the string «0» . When you read the data from a file, it is a string and not an integer, so that is why your integer check fails currently:

Also, you can use the with keyword to make the current code slightly more pythonic so that the lines in your code are reduced and you can omit the .close statements:

import csv with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out: writer = csv.writer(out) for row in csv.reader(inp): if row[2] != "0": writer.writerow(row) 

Note that input is a Python builtin, so I’ve used another variable name instead.

Edit: The values in your csv file’s rows are comma and space separated; In a normal csv, they would be simply comma separated and a check against «0» would work, so you can either use strip(row[2]) != 0 , or check against » 0″ .

The better solution would be to correct the csv format, but in case you want to persist with the current one, the following will work with your given csv file format:

$ cat test.py import csv with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out: writer = csv.writer(out) for row in csv.reader(inp): if row[2] != " 0": writer.writerow(row) $ cat first.csv 6.5, 5.4, 0, 320 6.5, 5.4, 1, 320 $ python test.py $ cat first_edit.csv 6.5, 5.4, 1, 320 

I have tried that as well, but it does not seem to be working regardless if it is set as a string or integer

I tried the way you edited it, and I have also tried to do a strip(), but the output file still has the rows with ‘0’ values!

ok, ive had trouble locating anything on doing this within a single file. would u be able to possibly provide me with a link to any post/info regarding this?

Use pandas amazing library:

The solution for the question:

import pandas as pd df = pd.read_csv(file) df = df[df.name != "dog"] # df.column_name != whole string from the cell # now, all the rows with the column: Name and Value: "dog" will be deleted df.to_csv(file, index=False) 

General generic solution:

def remove_specific_row_from_csv(file, column_name, *args): ''' :param file: file to remove the rows from :param column_name: The column that determines which row will be deleted (e.g. if Column == Name and row-*args contains "Gavri", All rows that contain this word will be deleted) :param args: Strings from the rows according to the conditions with the column ''' row_to_remove = [] for row_name in args: row_to_remove.append(row_name) try: df = pd.read_csv(file) for row in row_to_remove: df = df[eval("df.<>".format(column_name)) != row] df.to_csv(file, index=False) except Exception as e: raise Exception("Error message. ") 
remove_specific_row_from_csv(file_name, "column_name", "dog_for_example", "cat_for_example") 

Note: In this function, you can send unlimited cells of strings and all these rows will be deleted (assuming they exist in the single-column sent).

Источник

Как удалить строки в CSV?

В общем возникла проблема. У меня есть большой csv файл с колонкой, data и есть список из значений. Мне нужно записать в другой csv-файл всю строку из файла, если в колонке data, есть значение из списка.

with open('arm.csv', newline='') as File: with open('wdays_data.csv', mode='w') as wdays: reader = csv.reader(File) for row in reader: if row[0] in weekend_days: writer = csv.writer(wdays, delimiter=',') writer.writerows(row[0]) 

введите сюда описание изображения

Вот как пробовал я. Вывод row:

не до конца понял в чем вопрос. в заголовке про удаление строк, в тексте про создание нового CSV, который вы вроде как и делаете сами. а в чем проблема то сама? что вас не устраивает? что не так работает?

1 ответ 1

import csv weekend_days = [ '2020-03-12', '2020-03-13' ] with open('import.csv', newline='') as source: reader = csv.DictReader(source) with open('export.csv', mode='w', encoding='utf-8-sig', newline='') as destination: # Используйте эту кодировку ^^^ # если собираетесь открывать в Excel writer = csv.DictWriter(destination, dialect=csv.unix_dialect, fieldnames=reader.fieldnames) writer.writeheader() writer.writerows( filter(lambda x: x.get('date') not in weekend_days, reader) ) # ^^^^ Вот тут название поля с датой 

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.27.43548

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник

Как удалить строки в CSV?

Carler

мой код
6311182345a5e482023765.png
мой вывод
6311161bd4655228900382.png

Xion, ну, раз вы csv.reader используете для чтения файла, то логично в файл писать с помощью csv.writer.

Carler

with open('arm.csv', newline='') as File: with open('wdays_data.csv', mode='w') as wdays: reader = csv.reader(File) for row in reader: if row[0] in weekend_days: writer = csv.writer(wdays, delimiter=',') writer.writerows(row[0])

Carler

with open('import.csv', newline='') as source: reader = csv.DictReader(source) with open('export.csv', mode='w', encoding='utf-8-sig', newline='') as destination: writer = csv.DictWriter(destination, dialect=csv.unix_dialect, fieldnames=reader.fieldnames) writer.writeheader() writer.writerows( filter(lambda x: x.get('date') not in weekend_days, reader) )

Вопрос закрыт для ответов и комментариев

Почему происходит вечная обработка request запроса через proxy в python?

Источник

Удаление строк в файле csv с помощью python

У меня есть csv, в котором около 1000 строк. Мне нужно удалить все строки ниже 100 (т.е. начиная со 101). Но при этом мне нужно сохранить в исходной папке только укороченный csv. Как это можно сделать стандартными средствами python?

1 ответ 1

  1. переименовываем исходный файл, добавляя расширение «.bkp»:
  2. создаём новый файл с именем исходного файла
  3. в цикле читаем строки по одной из исходного файла и записываем в новый
  4. когда счетчик доходит до 100 выходим из цикла
from pathlib import Path filename = "/path/to/filename.txt" bkp_filename = filename + ".bkp" Path(filename).rename(bkp_filename) fn_in = Path(bkp_filename) fn_out = Path(filename) N = 10 with open(fn_in) as fin, open(fn_out, "w") as fout: for i, line in enumerate(fin): if i == N: break fout.write(line) 

UPD: для удобства можно также воспользоваться itertools.islice (как написал в комментариях @Stanislav Volodarskiy):

from itertools import islice . with open(fn_in) as fin, open(fn_out, "w") as fout: for line in islice(fin, N): fout.write(line) 

Если вы всегда работаете с маленькими кусками файлов, т.е. такими, которые гарантировано не вызовут проблем с памятью, то можно сделать чуть короче:

with open(fn_in) as fin, open(fn_out, "w") as fout: data = "".join(list(islice(fin, N))) fout.write(data) 

Источник

Читайте также:  Php parse http request headers
Оцените статью