2016-04-15 35 views
0

今天一切都有问题,第一次问一个问题,我甚至无法正确地在这里获得我的代码!从CSV文件中读取数据并使用该数据与pygame交谈

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

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

当行[0]是RAT1 CSV文件,这在我的代码被定义为:

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

但是这个抛出了“的论调1必须pygame.Surface,不str的“这很公平,但我真的很努力地找到解决办法,并且找到了一些相当离奇的事情,至少在我看来是怪异的。

我对此很陌生,所以我能想到解决这个问题的最好方法是将csv文件中的行[0]更改为1,然后将其导入到我的程序中并创建一个整数从它变量,例如

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

然后插入到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显示了图像,没有碰到什么问题,但是让它们交配看起来很难,当然,除了我之外。

任何帮助非常感谢!

回答

0

int()是Python标准内置函数,用于将字符串转换为整数值。你与含有数作为参数的字符串调用它,并返回转换为一个实际的整数的数目:上述打印2

print int("1") + 1 

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

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不是数字。

+0

非常感谢您的回复,我不太理解T2中的T2 = [map(int,x)]部分,因此我必须稍后再慢慢处理所有内容。 得到我的东西是,它一直说它是一个正在从csv读取的字符串,它应该是......“1”,我可以打印它,但它只是不会让我把它转换成一个整数,这看起来很奇怪,它是另一种奇怪的格式? –