我有一个CSV文件/home/user/file.csv
,例如:
V1
1.24
4.55
3
我试图只读取数字,,而不知道有标题。
如何阅读并跳过所有仅保留ints/floats/long/etc的String
元素?
以下尝试不起作用,因为即使我正在读取的行是数字,line
也不是数字:
f_in = open('/home/user/file.csv')
for line in f_in:
if !isinstance(line,basestring):
#Now we only have the rows that are numbers (but not really!)
try:
float(line)
except ValueError:
# not a number
也参见";请求宽恕而非允许"-解释
编辑:根据OP请求,一行看起来像:
1,1,0,0,0,0.0,0,1,1,1,0,0,00,0,0,0,0,1,0,0,10,1,0,0,00,1
import csv
with open('/home/user/file.csv') as csvfile:
for row in csv.reader(csvfile):
for n in row:
try:
float(line)
except ValueError:
# not a number
f_in = [1.24, 4.55, 3, "aaa"]
for line in f_in:
try:
float(line)
#it is number
except ValueError:
#it isn't a number
csv
模块提供了一个Sniffer
类,该类将判断文件是否有(一行)头。
has_header(sample)
分析示例文本(假定为CSV格式),如果第一行显示为一系列列标题,则返回
True
。