如何更改int或str的值(反之亦然)

时间:2014-05-02 17:29:47

标签: python mysql string int

我遇到的问题是我的代码给了我:

TypeError: unorderable types: str() >= int()

事情是,我不知道如何将我的值从str切换到int,反之亦然:

def separate(seq):
    result=[0,0];
    a=0
    b=0
    for c in seq:
        if(c=='0'):
            a+=1
        elif(c=='1'):
            b+=1   
        else:
            c>=2,
            pass

    return result

cursor1=mydb.cursor()

statement ="SELECT prediction FROM splicingdb.proteinsignalexperimental, splicingdb.disorderpredictions where proteinsignalexperimental.ID = disorderpredictions.ID AND source regexp 'disprot'"

cursor1.execute(statement)

resultat = cursor1.fetchall()

#print (resultat)

in [statement]: int(i)

s=statement

print(resultat)

zero, one = separate(s);

print ("zero: %d"%zero)

print ("one: %d"%one)

2 个答案:

答案 0 :(得分:0)

else:       # 
    c>=2,   #<----- Not sure what that is, but maybe you want to get rid of it! 
    pass    #<----- I suggest to get rid of the whole "else" block.

该代码将c与int进行比较。 前面的if-elif将c与字符串进行比较:

if(c=='0'):
...
elif(c=='1'):
...

c是陈述的要素。 和 statement =&#34; SELECT prediction FROM host.proteinsignalexperimental,host.disorderpredictions where proteinsignalexperimental.ID = disorderpredictions.ID AND source regexp&#39; disprot&#39;&#34;

c是一个str,你在跟踪你的其他内容时会比较一个似乎是语法错误(或一个非常奇怪的语法)的int。

如果你想改变你的变量类型,你可以这样做:

c = int(c)  #<--- changes c to int
# or    
c = str(c)  #<--- changes c to str

或进行比较而不更改类型:

int(c) == 2    # <--- Choose which applies to your data.
str(c) == '2'

答案 1 :(得分:0)

一旦你调整了缩进错误,我猜你的实际separate代码是这样的:

def separate(seq):
    result=[0,0];
    a=0
    b=0
    for c in seq:
        if(c=='0'):
            a+=1
        elif(c=='1'):
            b+=1   
        else:
            c>=2,
            pass
    return result

c>=2,正在提供TypeError,因为您尝试将字符c与整数1进行比较。看起来你打算将那条线仅仅作为评论,所以只需用英镑符号作为前缀。

#c>=2,

或者完全删除else子句。

    for c in seq:
        if(c=='0'):
            a+=1
        elif(c=='1'):
            b+=1
    #no else needed here!
    return result

(顺便说一句,你可能意味着return [a,b]。无论result包含什么,返回seq都会给你[0,0]