我正在从netcdf文件中读取数据,我注意到一些字段以"--"的形式写入我的文件。
当我将内容变量打印到控制台时,其值为:[33.9399999151.03918,蒙面,蒙面
我尝试了下面的代码块来检查行是否不包含掩码或"--",并写入这些值。它不起作用!
如何排除或检查这些值?
已尝试:如果内容中没有"屏蔽":outputwriter.writerow(内容)打印内容
更新
with open(r'C:/output.csv', 'wb') as csvFile:
outputwriter = csv.writer(csvFile, delimiter=',')
for date_val in date_strings:
header.append(date_val)
outputwriter.writerow(header)
for lat_index, lat in enumerate(lats):
for lon_index, lon in enumerate(lons):
content = [lat,lon]
for time_index, time in enumerate(times[:]):
data = value[time_index,lat_index,lon_index]
content.append(data)
#outputwriter.writerow(content)
temp = content
contentVal = (set(temp)-set(exclude))
for item in contentVal:
outputwriter.writerow(item)
print item
更新2
from netCDF4 import Dataset, num2date
import csv
filename = "C:/netcdf.nc"
nc = Dataset(filename, 'r', Format='NETCDF4')
lats = nc.variables['latitude'][:]
lons = nc.variables['longitude'][:]
sfc = nc.variables['Min_SFC'][:]
times = nc.variables['time']
dates = num2date(times[:],times.units)
date_strings = [date.strftime('%d-%m-%Y') for date in dates]
header = ['Latitude', 'Longitude']
exclude = ['masked','--']
with open(r'C:/output.csv', 'wb') as csvFile:
outputwriter = csv.writer(csvFile, delimiter=',')
for date_val in date_strings:
header.append(date_val)
outputwriter.writerow(header)
for lat_index, lat in enumerate(lats):
for lon_index, lon in enumerate(lons):
content = [lat,lon]
for time_index, time in enumerate(times[:]):
data = sfc[time_index,lat_index,lon_index]
content.append(data)
contentVal = (set(content)-set(exclude))
print "Content Val"
print contentVal
print "Content"
print content
outputwriter.writerow(contentVal)
您需要使用for循环。
for i in content:
if i != "masked" or i != "--":
outputwriter.writerow(i)
print i
我从未使用过outputwriter
,尽管如果您的项目在列表中,则可以制作另一个列表来排除值:
l = [-33.939999, 151.03918, '--', 'masked', 'masked']
x = ['masked','--']
content = (set(l)-set(x))
for item in content:
outputwriter.writerow(item)
print item
输出:
151.03918
-33.939999