我正在尝试从所有文本中删除一个字符串并将其转换为整数,以便我可以更轻松地使用if语句...
count = "19 Count"
count = count.replace(" Count", "")
print repr(count)
print int(count)
'19'
19
但是在我的实际代码中,我的输出是:
u'19'
Traceback (most recent call last):
File "C:\test.py", line 153, in <module>
print int(count)
ValueError: invalid literal for int() with base 10: ''
答案 0 :(得分:3)
错误ValueError: invalid literal for int() with base 10: ''
的原因是您在int()
中传递空字符串。像int('')
一样。 主要问题在于剥离非数字字符的代码。
正则表达式可用于获取第一位数字。
In [3]: import re
In [4]: a = re.search('\d+', ' 18 count 9 count')
In [5]: int(a.group())
Out[5]: 18
答案 1 :(得分:2)
检查每个单词的数字,并使用Filter输出,如果它是真的。
>>> count = "19 Count"
>>> filter(lambda x:x.isdigit(), count)
'19'
答案 2 :(得分:1)
试试这个,以满足您的要求。只会匹配第一组“数字”:
import re
regex = re.compile("(\d+)")
r = regex.search("19 Count 1 Count")
print(int(r.group(1)))
输出:
19
您可以在此处试用代码:http://ideone.com/OwbMYm