如何检查csv连接中的行是字符串还是数字



我有一个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

最新更新