Python if语句使用CSV数据

时间:2014-08-04 03:35:08

标签: python python-2.7 csv

我正在读取CSV文件中的一些数据,然后根据if语句打印一个值,但这似乎对我没有意义。我希望它会打印equal to 1

PYTHON CODE:

import csv

#open CSV file
csvfile = open("C:\\python.csv", "rb")
data = csv.reader(csvfile)
data = [row for row in data]

#start loop through each item
for currentrow in range(1, 2):  # numbers off due to array starting at 0
    #grab one record data [row][col]
    Count = data[currentrow][7]

    print "Count equals: " + Count

    if Count > 1:
        print "greater than 1"
    if Count == 1:
        print 'equal to 1'

输出:

Count equals: 1.00
greater than 1

1 个答案:

答案 0 :(得分:3)

您的麻烦源于这样一个事实:您从文件中读取的内容始终是字符串(即str类型)。这意味着即使文件包含数字,它也会作为字符串读入变量。因此,如果您的文件如下所示:

<强> MYFILE.TXT

2

如果你这样做了:

with open('myFile.txt') as infile:
    x = infile.readline()

然后,x将具有值'2',这是str类型。这意味着,如果您执行了x*2,那么您将获得'22',因为这就是字符串如何成倍增加。

您真正想要的是将该刺痛转换为int。这称为&#34;将字符串转换为整数&#34;并且可以非常简单地完成:

y = int(x)

您应该注意另一种类型:float。它用于保存十进制数字。所以,如果你要说

x = 3.4

然后x将是float。您还可以将int转换为float s:

z = float(y)

会将z转换为浮点数,其值为2.0

现在,关于你的实际问题:

data = [row for row in data]  # data is now a list of lists; each sublist is a list of strings
for currentrow in range(1,2):
    Count = data[currentrow][7]  # Count is now the string at index 7, of the sublist at index `currentrow`, i.e. 1.00
    Count = float(Count)  # Count is now the floating point value of the string '1.00'
    Count = int(Count)  # Count is now the integer value of 1.00, i.e. 1
    if Count > 1:
        print "greater than 1"
    if Count == 1:
        print "equal to 1"

现在,关于你的第二个问题:

print 'Count equals ' + Count

在这里,您尝试添加strint。那些,这些是不相容的类型添加。因此,您应该将int投射到str;就像将str投射到int s中一样,int可以通过调用str投放到str()中:

Count_str = str(Count)

因此,当您想要打印该值时,您可以执行以下操作:

print "Count equals " + str(Count)

当然,print语句更加友好,让你做这样的事情:

print "Count equals", Count  # no casting needed here