使用 CSV 数据的 Python if 语句

标签 python python-2.7 csv

我正在从 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 也可以转换为 strstr() 的调用:

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/

相关文章:

python - 如何使用 BeautifulSoup 等待一秒钟保存汤元素以让元素在页面中加载完成

csv - 如何在 Mule 中读取巨大的 CSV 文件

java - 是否可以通过 JAXB 2.2.x 解码非 XML 数据?

python - 在评论中添加招摇描述

python - 我的功能保存到 pickle 不工作

python - matplotlib:如何返回一个 matplotlib 对象然后作为子图绘制?

python - 为什么即使我没有指定分隔符,split 函数也会忽略 '\n'?

python - 没有名为 sh 的模块

python - 是否可以创建具有相同输入的唯一实例?

excel - 使用 CSV 文件中的唯一模式过滤特定数据,并将该数据移动到同一行的新列