2012-01-20 43 views
1

我花了最后2个小时试图找到一个解决方案,并没有任何结果。所以要么这是不可能的,要么是如此基本,以至于没有人会写这个。基本上我有2个字符串双方人数相等,但是当我去把它们加起来,我得到一个连击,而不是一些。这里是我的代码(Python)的如何将str转换为int并将它们加在一起?

currentNukeScriptName = nuke.root().name() 
splitUpScriptName1 = currentNukeScriptName.split('/') 
splitUpScriptName2 = splitUpScriptName1[-1] 
splitScriptNameAndExtention = splitUpScriptName2.split('.') 
currentNukeScriptName = splitScriptNameAndExtention[0] 
splitUpCurrentScriptName = currentNukeScriptName.split('_') 
currentVersionNumber = splitUpCurrentScriptName[-1] 
decimalVersionNumber = "1" + "," + str(currentVersionNumber) 
addingNumber = 1 
newVersionNumber = str(decimalVersionNumber) + str(addingNumber) 

print newVersionNumber 

decimaleVersionNumber = 1,019 

如果我改变newVersionNumber代码太:

newVersionNumber = int(decimalVersionNumber) + int(addingNumber) 

我得到:

# Result: Traceback (most recent call last): 
File "<string>", line 10, in <module> 
ValueError: invalid literal for int() with base 10: '1,019' 

我不知该怎么办..这是不可能的?还是我在做一些完全错误的事情?

编辑:

所以,问题是在decimalVersionNumber发现我在那里加一个逗号。保持逗号并将数字加在一起的最好方法是什么?

回答

6
ValueError: invalid literal for int() with base 10: '1,019' 

听起来像它不喜欢逗号 - 尝试先删除它。

+1

我早些时候评论过,并说它没有工作,但我想我错过了一些东西,因为它现在有效:S。你是对的..所以如果我想保留逗号,我该怎么办? – user1159817

+0

只需在解析整数之前将其删除(编程),你就会好起来的。除非你想搞乱'locale'模块。 –

0

您需要使用

int.Parse(decimalVersionNumber) + int.Parse(addingNumber) 

这将解析数字的字符串表示成整数,这样他们就可以加入。

例如:

字符串连接:

“10” + “20”= “1020”

整数此外,从串解析:

int.Parse( “10” )+ int.Parse(“20”)= 30

+0

我试过,但它告诉我: #结果:回溯(最后最近一次调用): 文件“”,10号线,在 AttributeError的:对象类型“诠释”有没有属性“解析” – user1159817

+0

@ user1159817:我想他认为你是用C#编写的。 – DSM

+0

啊是的,我可以明白为什么,当我第一次问这个问题时,我忘了标记python – user1159817

相关问题