如何跳过第一行并将非值替换为0

2024-05-14 16:04:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,第一行有我不需要的日期,我想跳过它,但它不起作用。我需要如何用0替换我的非值

fp = open( "estat_sdg_07_11.csv") 
data = []
while True:
    buffer = fp.readline().strip() 
    if buffer == "":
        break 
    buffer = str(buffer)
    data.append(buffer)
fp.close()

以下是我的文件的第一行: enter image description here


Tags: 文件csvtruedatareadlineifbufferopen
2条回答

这是我的csv内容:

a,b,c,d,e,f,,1,2,3,4
a,b,c,d,e,f,,1,2,3,4
a,b,c,d,e,f,,1,2,3,4
a,b,c,d,e,f,,1,2,3,4
a,b,c,d,e,f,,1,2,3,4
a,b,c,d,e,f,,1,2,3,4

这样试试。这将跳过第一行,并用带条线填充data

fp = open( "estat_sdg_07_11.csv","r") 
lines = fp.readlines()
data=[ l.strip() for l in lines[1:] ]
fp.close()

如果列表中的一个元素为空,这也会添加零

fp = open( "estat_sdg_07_11.csv","r") 
lines = fp.readlines()
data = [ [0 if x=="" else x for x in l.strip().split(",")]  for l in lines[1:] ]  
fp.close()

或者

fp = open( "f.csv","r")
data = [ [0 if x=="" else x for x in l.strip().split(",")]  for l in fp.readlines()[1:] ]
fp.close()

结果应该是由列值列表表示的行列表。 大概是这样的:

print(data)

输出:

[["a","b","c",1,4,0],
["a","b","c",1,4,0],
["a","b","c",1,4,0]]

首先,尽量使用with语句。它以适当的方式处理打开和关闭文件,以防发生异常

open提供了一个迭代器,您可以通过对其执行next()操作轻松跳过第一行:

with open("estat_sdg_07_11.csv") as f:
    next(f) # skipping the first row.
    for line in f:
        # do what you wanna do

顺便说一句,如果您使用的是csv文件,csv模块可能会有所帮助

相关问题 更多 >

    热门问题