我正在尝试从字符串中提取整数。我已经成功地使用了各种方法,但是输出始终是列表。我可以保证该字符串将仅包含一个整数,以后需要处理该整数。
import re
string = '123 Hi there!'
number = re.findall('[0-9]+', string)
print number
>>> ['123']
2 * number
>>> ['123', '123']
我希望下面的输出为246。
答案 0 :(得分:1)
选择第0个元素以获取整数字符串并将其转换为整数。
number = int(re.findall('[0-9]+', string)[0])
那你就可以做
2 * number
答案 1 :(得分:1)
尝试一下,这应该可以解决您的问题:
import re
string1 = '123 Hi there!'
result = int(re.search(r'\d+', string1).group())
print(result)
答案 2 :(得分:0)
试试看
import re
string = '123 Hi there!'
number = int(re.findall('[0-9]+', string)[0])
print(number * 2)
在这里,我使用了索引运算符来选择返回列表中的唯一元素,然后只需将其转换为整数(int
)。
答案 3 :(得分:0)
如果确定只有一个元素,则可以使用re.search
。
例如:
import re
string = '123 Hi there!'
number = re.search('[0-9]+', string)
if number:
print int(number.group())*2
输出:
246
答案 4 :(得分:0)
您可以尝试re.sub
sub(pattern, repl, string, count=0, flags=0) Return the string obtained by replacing the leftmost non-overlapping occurrences of the pattern in string by the replacement repl. repl can be either a string or a callable; if a string, backslash escapes in it are processed. If it is a callable, it's passed the match object and must return a replacement string to be used.
也就是说,
>>> import re
>>> string = '123 Hi there!'
>>> re.sub("[^0-9]","",string)
'123'
答案 5 :(得分:-1)
您只需要在代码中添加短文本,只需更改此行即可:-
number = re.findall('[0-9]+', string)
此行
number = int(re.findall('[0-9]+', string)[0])
获取列表的第一个元素。