python - 解析 csv 文件,将行存储/写入到旧文件中的行之间的新文件
问题描述
我正在尝试解析 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])
似乎只取 start 和 stop 的一个值,并为该点存储文件的其余部分。
我也试过:
if check == row[2]:
start = int(row[0]) #gets the starting row
writer.writerow(row)
但只存储一排。
解决方案
在我看来,您可以使用作为 pandas 一部分的 .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")
推荐阅读
- vb.net - DirectCast 对象上的 SelectAll 不起作用
- gis - 如何使用 arcgis Rest API 设置流程?
- php - Laravel,如何将密码重置为用户表中重复的电子邮件
- laravel - 如果数组大小很大,则无法在会话中存储数组 laravel 6
- plot - 无法使用散景 BoxSelectTool 访问选择
- python - Visual Studio Code 的调试器和 pipenv
- javascript - 如何通过 React 中的 api 数据进行映射?
- javascript - 如何使排行榜滑块横幅响应?
- javascript - 如何将图像添加到
标签来自 - javascript - 开玩笑:如何用期望值的子集测试 console.log haveBeenCalled?