我有一个csv文件,其中包含指向网页的链接。我正在从每个链接收集数据并将其保存在单独的csv文件中
现在,如果我必须从我离开它的位置恢复文件,我必须手动删除csv文件中的条目,然后运行代码。
我查看了csv模块的文档,但找不到任何用于此目的的函数
我还在Stackoverflow和其他网站上就此进行了所有其他问题,但没有一个有用
有没有办法按照我想要的方式删除行?
这就是我现在所拥有的
import pandas as p
df = p.read_csv("All_Links.csv")
for i in df.index:
try:
url= df.ix[i]['MatchLink']
#code process the data in the link
#made sure that processing has finished
#Now need to delete that row
答案 0 :(得分:1)
由于您已经将整个文件读入数据框,因此您可以从您离开的位置开始迭代。假设你离开了i=23
,你可以这样做:
import pandas as p
df = p.read_csv("All_Links.csv")
last_line_number = 23
for i in df.index[last_line_number:]:
try:
url= df.ix[i]['MatchLink']
#code process the data in the link
#made sure that processing has finished
#Now need to delete that row
这是最简单的方法。更强大的是拥有2个文件,一个用于处理行,一个用于处理行。
答案 1 :(得分:1)
如果要将未处理的其余数据写回csv文件,即只删除处理的数据,只需将算法修改为:
import pandas as p
df = p.read_csv("All_Links.csv")
for i in df.index:
try:
url= df.ix[i]['MatchLink']
#code process the data in the link
#made sure that processing has finished
df.iloc[i:].to_csv('All_links.csv', index=False)
但这会在每次迭代时编写你的文件,也许最好记住i
的值,并在完成所有迭代后再执行:
import pandas as p
df = p.read_csv("All_Links.csv")
i = 0
for i in df.index:
try:
url= df.ix[i]['MatchLink']
#code process the data in the link
#made sure that processing has finished
except:
# something broke, this row isn't processed decrease i
i -= 1
break
# Now write the rest of unprocessed lines to a csv file
df.iloc[i:].to_csv('All_links.csv', index=False)