从CSV文件中读取并使用数据与pygame对话

时间:2016-04-15 11:32:41

标签: python csv

今天似乎遇到了很多问题,第一次问一个问题,我甚至无法正确地获取我的代码!

基本上我希望做的是从csv文件导入数据并使用它来使用pygame选择和显示图像。

screen.blit(row[0],(0,0))

其中row [0]是csv文件中的Rat1,已在我的代码中定义为:

Rat1 = pygame.image.load('Rat1.jpg').convert()

然而这引发了争论1.论证1必须是pygame.Surface,而不是str",这是公平的,但我真的很难找到解决这个问题的方法并且发现了一些相当奇怪的事情对我来说,至少对我来说很奇怪。

我是新手,所以我能想到解决这个问题的最佳方法是将csv文件中的row [0]更改为1,然后将其导入我的程序并创建一个来自它的整数变量,例如

x = row[0]
int(x)                     
if x == 1:
    x = Rat1

然后将x插入pygame,例如

screen.blit(x,(0,0))

如果我只是将x = Rat1作为全局变量,这是有效的,但是如上所述,并不将x更改为= 1,它仍然保持为行[x]所以它只是不喜欢它

当我尝试测试它时,它归结为这种情况......

import csv

out = open("CSVTest.csv","rb")
data = csv.reader(out)
data = [row for row in data]
out.close()

print row[0]    #this causes it to print a 1, so I know
                #it's working and reading as it should

x = row[0]      #make a variable

int(x)          #doesn't throw up an error, so I assume it
                #has changed the csv string to an integer

print x         #prints a 1 again

if x == 1:
print "hello?"      #doesn't print, so clearly doesn't
                    #recognise x as an integer

if x == 49:         #I'm getting desperate now, ASCII 1?!
print "hello?!"     #No joy

那么它到底是什么,它似乎不是你的标准字符串,因为它不会明显转换为整数。

我已经尝试过pygame.image.fromstring(),答案可能就在于此,但我无法让它发挥作用。

任何人都可以指出这一切有什么问题,以及我如何轻松地从csv文件调用数据,并至少将其识别为整数甚至更好,插入一些pygame代码并显示?

我已经从csv文件中读取了一些内容,并且显示了带有pygame的图像,但是让两者交配似乎很难,超出了我的想法。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

int()是用于将字符串转换为整数值的Python标准内置函数。您可以使用包含数字作为参数的字符串来调用它,并返回转换为实际整数的数字:

print int("1") + 1

以上打印2

如果您知道列表的结构(它只包含列表,只有一个级别),您可以这样做:

T2 = [map(int, x) for x in T1]

或...

试试这个。

x = "1"

x是一个字符串,因为它有引号,但它中有一个数字。

x = int(x)

由于x中的数字为1,我可以将其转换为整数。

要查看字符串是否为数字,您可以执行此操作。

def is_number(var):
    try:
        if var == int(var):
            return True
    except Exception:
        return False

x = "1"

y = "test"

x_test = is_number(x)

print(x_test)

它应该打印到IDLE True,因为x是一个数字。

y_test = is_number(y)

print(y_test)

它应该打印到IDLE False,因为y不是数字。