从字符串中提取整数(作为int而不是列表)

时间:2018-07-11 12:34:11

标签: python

我正在尝试从字符串中提取整数。我已经成功地使用了各种方法,但是输出始终是列表。我可以保证该字符串将仅包含一个整数,以后需要处理该整数。

import re
string = '123 Hi there!'
number = re.findall('[0-9]+', string)
print number
>>> ['123']

2 * number
>>> ['123', '123']

我希望下面的输出为246。

6 个答案:

答案 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])

获取列表的第一个元素。