[英]How to delete first row in a csv file using python
我只想删除 python 中 csv 的第一行(不是标题)我已经尝试了许多使用 import csv 或 pandas 的解决方案,但还没有对我有用。 所有解决方案都打印出 csv 并且没有修改原始文件。
重要的是我不想打印或跳过/忽略第一行我想删除它并将其保存到原始文件而不是创建另一个文件。
谢谢:)
用csv reader读取csv文件后,next()会返回文件中的每一行,所以可以这样解决:
import csv
csv_file_name= '<your_file_name>.csv'
file = open(csv_file_name)
csvreader = csv.reader(file)
# store headers and rows
header = next(csvreader)
# ignore first row
next(csvreader)
# store other rows
rows = []
for row in csvreader:
rows.append(row)
file.close()
with open(csv_file_name, 'w', encoding='UTF8', newline='') as f:
writer = csv.writer(f)
# write the header
writer.writerow(header)
# write multiple rows
writer.writerows(rows)
FILENAME = 'test.csv'
DELETE_LINE_NUMBER = 1
with open(FILENAME) as f:
data = f.read().splitlines() # Read csv file
with open(FILENAME, 'w') as g:
g.write('\n'.join([data[:DELETE_LINE_NUMBER]] + data[DELETE_LINE_NUMBER+1:])) # Write to file
原始 test.csv:
ID, Name
0, ABC
1, DEF
2, GHI
3, JKL
4, MNO
运行后:
ID, Name
1, DEF
2, GHI
3, JKL
4, MNO
(删除0, ABC
)
如果您的(CSV)文件足够小,请将其读入内存,删除该行并将其写回。
这里不需要 Pandas 甚至csv
模块。
# Read lines into list
with open("myfile.csv") as f:
lines = list(f)
lines.pop(1) # pop the second line out (assuming the zeroth line is headers)
# Write lines back into file
with open("myfile.csv", "w") as f:
for line in lines:
f.write(line)
如果您的文件较大,请不要将其全部读入内存,而是将其动态过滤到第二个文件中,然后替换第一个文件:
import os
with open("myfile.csv") as rf, open("myfile.csv.temp", "w") as wf:
for i, line in enumerate(rf):
if i != 1: # Everything but the second line
wf.write(line)
os.replace("myfile.csv.temp", "myfile.csv")
你可以试试。 如果文件不是太大,它可以工作
# Read the data
with open("your file.csv", "r") as f:
data = f.read().split("\n")
# Remove the 1st line
del data[1]
# Save the data
with open("your file.csv", "w") as f:
f.write("\n".join(data))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.