我正在从 CSV 文件中读取一些数据,然后根据 if 语句打印一个值,但这对我来说似乎没有意义。我希望它会打印等于1
Python 代码:
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
最佳答案
您的麻烦源于这样一个事实:您从文件中读取的内容始终是字符串(即 str
类型)。这意味着即使文件包含数字,它也会作为字符串读入变量。因此,如果您的文件如下所示:
myFile.txt:
2
如果你这样做了:
with open('myFile.txt') as infile:
x = infile.readline()
那么,x
的值为 '2'
,它是 str
类型。这意味着,如果您执行 x*2
,您将得到 '22'
,因为这就是字符串相乘的方式。
您真正想要的是将该字符串转换为 int
。这称为“将字符串转换为整数”,可以非常简单地完成:
y = int(x)
您应该注意另一种类型:float
。它用于保存十进制数。所以,如果你说
x = 3.4
那么x
将是一个float
。您还可以将 int
转换为 float
:
z = float(y)
会将 z
转换为 float ,值为 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
一样,int
也可以转换为 str
对 str()
的调用:
Count_str = str(Count)
所以当你想打印该值时,你可以这样做:
print "Count equals " + str(Count)
当然,打印语句更友好一点,可以让你做这样的事情:
print "Count equals", Count # no casting needed here
关于使用 CSV 数据的 Python if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25111424/