2017-10-17 55 views
1

我知道,我的变量将存储类似:检索一切逗号前

x = '(2,)' 
x = '(5,)' 

我怎么能只提取次数(逗号之前并删除括号),并存储为x

所以总体

x = 2时

或x = 5

编辑:索尔对于我非常糟糕的编程语言,它是一个元组而不是字符串,非常感谢您的帮助。

+0

你在哪里变量是从哪里来的?为什么最初以这种奇怪的方式存储?这可能是更好地解析它不同于上游,而不是现在修复它 –

+0

@Chris_Rands它从SQL语句获得 –

回答

0

下面的代码删除所有开头和结尾的括号,以及逗号:

x.strip('(),') 

如果你也想的结果转换为整数,使用:

int(x.strip('(),')) 

然而,似乎你的x不是一个字符串,但真的是一个Python元组:

x = (2,) 

在这种情况下,只需使用:

x[0] 
+0

感谢您的评论,请参阅ammend - 对不起,我忘了括号封装它! –

0

你可以尝试

y = x[:x.find(',')] 

OP编辑的问题后:执行

y = x[x.find('(')+1:x.find(',')] 

例(jupyter):

x = '(5,)' 

y = x[x.find('(')+1:x.find(',')] 

y 
Out[24]: '5' 
+0

警告!如果您的输入字符串不以“,”结尾,这将盲目地删除最新的数字。也就是说,'x ='23''会导致'y ='2''。这可能不会发生在你现在的输入中,但如果它确实发生了,这将是非常令人惊讶和难以调试的。 – vog

+0

@vog是的,我知道它。但OP写道:“我怎样才能提取数字(在逗号之前)'。我假设,该输入字符串将包含逗号。 – kvorobiev

+0

感谢您的评论,请参阅ammended - 对不起,我忘了括号封装它!是的,现在总是有一个逗号 –

0

正则表达式:

import re 
regex = r"(\d*)\," 
test_str = "10," 
matches = re.findall(regex, test_str) 
x = int(matches[0]) # 10 

Try online here

+0

感谢您的评论,请参阅ammended - 对不起,我忘记括号封装它! –