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

时间:2014-01-16 02:09:53

标签: python string csv casting io

我有一个CSV文件,/home/user/file.csv,例如:

V1
1.24
4.55
3

我试图只读取数字,,但事先并不知道有标题

如何读取此内容并跳过仅保留整数/浮点数/长/等的所有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!)

3 个答案:

答案 0 :(得分:3)

try:
    float(line)
except ValueError:
    # not a number

另见"Ask forgiveness not permission" - explain

编辑:根据OP请求,显示如下行:

  

1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0 ,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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

csv模块提供了一个Sniffer类,用于确定您的文件是否有(一行)标题。

  

has_header(sample)

     

分析示例文本(假设为CSV格式),如果第一行显示为一系列列标题,则返回True