csv空字符串处理和值附加

时间:2017-07-09 00:26:22

标签: csv append

使用大约50行(星号)和~30列(名称,大小和距离)的csv,它有一些空字符串值(''),我试图做两件事迄今为止所有的帮助都没有用。 (1)我需要将空字符串解析为0.0,因此我可以(2)将每一行附加到列表列表中(我称之为s)。

换句话说: - s是一个星星列表(每个星星都有其所有参数) - d是所有星星(距离)的特定参数,我可以正确获得。

问题在于s。我的尝试:

with open('stars.csv', 'r') as mycsv:
    csv_stars = csv.reader(mycsv)
    next(csv_stars) #skip header
    stars = list(csv_stars)
    s = [] # star
    d = [] # distances
    for row in stars:
        row[row==''] = '0'
        s.append(float(row)) #stars
        d.append(arcsec*AU*float(row[30]))

我无法想到更好的语法,所以我得到了错误

  

s.append(float(row))#stars   TypeError:float()参数必须是字符串或数字

s我将分别获得所有星星的大小。但首先要做的事情......

1 个答案:

答案 0 :(得分:0)

@cwasdwa请看下面的代码。它会给你一个想法。我相信可能有更好的方法。此解决方案基于我从您的代码中理解的内容。

with open('stars.csv', 'r') as mycsv:
csv_stars = csv.reader(mycsv)
next(csv_stars) #skip header
stars = list(csv_stars)
s = [] # star
d = [] # distances
for row in stars:        
    newRow = [] #create new row array to convert all '' to 0.0
    for x in row:
        if x =='':
            newRow.append(0.0)
        else:
            newRow.append(x)
    s.append(newRow) #stars

    if row[30] == '':
        value = 0.0
    else:
        value = row[30]
    d.append(arcsec*AU*float(value))