使用大约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
我将分别获得所有星星的大小。但首先要做的事情......
答案 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))