如何从csv文件中删除一系列行?

问题描述 投票:0回答:3

我想从文件'Database.csv'中删除第3至15行。请在下面查看我的代码,该代码仅适用于我添加的range的一行,但无效。 ;/

filename = 'Database.csv'
line_to_delete = [3:15]
initial_line = 1
file_lines = {}

with open(filename) as f:
    content = f.readlines()

for line in content:
    file_lines[initial_line] = line.strip()
    initial_line += 1

f = open(filename, "w")
for line_number, line_content in file_lines.items():
    if line_number != line_to_delete:
        f.write('{}\n'.format(line_content))

f.close()
print('Deleted line: {}'.format(line_to_delete))
python csv line
3个回答
1
投票

您可以使用csv库执行此操作。

import csv
file=open("Database.csv",'rb')
final_file=open("Database_edited",'wb')
writer=csv.writer(final_file)
line_no=1   # for knowing the line number
for row in csv.reader(file):
    if(line_no<=3 or line_no>=15):
        writer.writerow(row)
    line_no=line_no+1
file.close()
final_file.close()

以这种方式Database_edited将拥有您所需的文件


0
投票

这是使用csv模块和range()功能的简单方法:

mport csv

filename = 'Database.csv'
startline, endline = 3, 15  # Inclusive.

with open(filename, 'r', newline='') as f:
    content = [row for i,row in enumerate(csv.reader(f), 1)
                    if i not in range(startline, endline+1)]

filename2 = 'Database2.csv'  # Write to different file for testing.
with open(filename2, 'w', newline='') as f:
    csv.writer(f).writerows(content)

print('lines deleted')

0
投票
    #Tested code on Python 3.6
import csv

filename = r'C:\Users\91852\Desktop\New folder (2)\lines.csv'
start_skip_row = 3
stop_skip_row = 13


def readCSVFile(file_name: str, start: int, stop: int) -> list:
    with open(file_name, 'r') as file_content:
        data_after_deletion = [line.replace('\n', '') for idx, line in enumerate(file_content) if
                               not start - 1 <= idx < stop]
        print(data_after_deletion)
        return data_after_deletion


def writeCSVFile(data: list) -> None:
    with open('file_after_deletion', 'w', newline='') as csvFile:
        writer = csv.writer(csvFile)
        writer.writerows(data)


data_after_deletion = readCSVFile(filename, start_skip_row, stop_skip_row)
writeCSVFile(data_after_deletion)
© www.soinside.com 2019 - 2024. All rights reserved.