我想从文件'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))
您可以使用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将拥有您所需的文件
这是使用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')
#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)