我正在读取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
答案 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
在这里,您尝试添加str
和int
。那些,这些是不相容的类型添加。因此,您应该将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