python删除csv文件某一行_从python中的CSV文件中删除特定行

下面是我将如何处理这个问题,但这可能不是最好的方法。在from datetime import datetime

dateranges = [("01-01-1951","12-31-1951"),("07-01-1962","12-31-1962")]

dateranges = list(map(lambda dr: tuple(map(lambda x: datetime.strptime(x,"%m-%d-%Y"),dr)),dateranges))

def datefilter(x):

# The date format is different here to match the format of the csv

x = datetime.strptime(x,"%Y-%m-%d")

for r in dateranges:

if r[0]<=x and r[1]>=x: return True

return False

with open(main_file, "rb") as fp:

root = csv.reader(fp, delimiter='\t')

result = collections.defaultdict(list)

for row in root:

if datefilter(row[3]):

# use a regular expression or any other means to filter on id here

if row[2].startswith("dd:111"): #code to remove item

我所做的是创建一个日期范围元组的列表(为了简洁起见,我只在其中放了2个范围),然后将它们转换为datetime对象。在

我在一行中使用了maps来完成这个任务:首先循环该列表中的所有元组,然后应用一个函数来循环该元组中的所有条目并将其转换为日期时间,使用tuple和list函数返回原始结构。长时间这样做看起来像:

^{pr2}$

注意,我只是将元组中的每个项转换为一个日期时间,然后将元组添加到新列表中,替换原来的(我不再需要它了)。在

接下来,我创建一个datefilter函数,它接受一个datestring,将它转换为datetime,然后在所有范围内循环,检查该值是否在该范围内。如果是,则返回True(表示应该过滤此项),否则如果检查所有范围都不匹配,则返回False(表示不过滤此项)。在

现在,只要日期匹配,就可以使用任何方法签出id,如果需要,可以删除该项。由于您的示例在前几个字符中是常量,所以我们可以使用字符串startswith函数来检查id。如果它更复杂,我们可以使用regex。在

你可能感兴趣的:(python删除csv文件某一行_从python中的CSV文件中删除特定行)