我正在尝试解析CSV文件,并将行存储到新CSV文件中(位于旧CSV文件的两个特定行之间)。
是否可以在两个特定行之间存储间隔行?
例如:
old.csv
包含1000行。 old.csv
文件中的开始行位于63行中,而old.csv文件中的结束行位于112行中。
我通过检查CSV文件每一行上的特定值来获得该行。
我想将63-112之间的行存储到新的CSV文件中。
import csv
check = "0000303030303030"
end_check = "0063303030303030"
with open('testytesttest.csv', 'w') as outfile:
writer=csv.writer(outfile, delimiter='\t')
with open('fack1.csv') as infile:
reader=csv.reader(infile, delimiter='\t')
for row in reader:
if end_check == row[2]:
stop = int(row[0]) #gets the ending row
if check == row[2]:
start = int(row[0]) #gets the starting row
else:
loop_done = True
print("loop is done")
if loop_done == True:
for row in reader:
writer.writerow(row[start:stop])
但是
writer.writerow(row[start:stop])
似乎只采用开始和停止的一个值,并存储该点上文件的其余部分。
我也尝试过:
if check == row[2]:
start = int(row[0]) #gets the starting row
writer.writerow(row)
但是只存储一行。
答案 0 :(得分:0)
在我看来,您可以使用作为熊猫一部分的.iloc来实现这一目标。
import pandas as pd
import csv
def lineCheckerCSV(filepath: str, break_term: str)->int:
with open(filepath) as file:
filereader = csv.reader(file, delimiter=',')
i = 0
for line in filereader:
if break_term in line:
break
i+=1
return i
check = lineCheckerCSV("0000303030303030")
end_check = lineCheckerCSV("0063303030303030")
csv = pd.read_csv('testytesttest.csv')
csv.iloc[check:end_check,].to_csv("filename.csv")