在Python中查找字符串中的独立整数
我正在创建一个函数,它接收一条街道加上一个门牌号,可能还有一个加法,然后返回门牌号。我可以简单地提取整数,但问题是街道名称本身可能有一个整数。例如:在Python中查找字符串中的独立整数,python,list,integer,Python,List,Integer,我正在创建一个函数,它接收一条街道加上一个门牌号,可能还有一个加法,然后返回门牌号。我可以简单地提取整数,但问题是街道名称本身可能有一个整数。例如: my_string='Hendrik 4e laan 18 bis' 在这种情况下,我想返回: street\u name='Hendrik 4e laan',street\u number=18,street\u number\u addition='bis' 我不能简单地在空格上拆分字符串并取最后一个整数([x代表我的字符串中的x.split(
my_string='Hendrik 4e laan 18 bis'
在这种情况下,我想返回:
street\u name='Hendrik 4e laan',street\u number=18,street\u number\u addition='bis'
我不能简单地在空格上拆分字符串并取最后一个整数([x代表我的字符串中的x.split(),如果x.isdigit()][-1]
),因为街道号码加法可能附加到街道号码(例如18bis或18b)
因此,我如何获得[4,18]
的列表,这样我就可以只拿最后一项了?这对我来说很有用:
>>> import re
>>> my_string = 'Hendrik 4e laan 18 bis'
>>> re.findall( r'(\d+)', my_string )
['4', '18']
>>>
这对我很有用:
>>> import re
>>> my_string = 'Hendrik 4e laan 18 bis'
>>> re.findall( r'(\d+)', my_string )
['4', '18']
>>>
如果您知道只需要最后一次出现,那么另一个选项是搜索一系列数字,而不是查找所有数字(您可以使用
findall
-参见lenik的答案),在这些数字之后,字符串末尾之前不再有数字:
import re
my_string = 'Hendrik 4e laan 18 bis'
match = re.search(r'(\d+)\D*$', my_string)
if match:
number = int(match.group(1)) # gives here: number = 18
else:
print("no digits found")
正则表达式的解释:
一个或多个数字(带分组括号,以便我们可以使用(\d+)
提取它们).group(1)
-零个或多个非数字字符\D*
-字符串的结尾$
findall
-参见lenik的答案),在这些数字之后,字符串末尾之前不再有数字:
import re
my_string = 'Hendrik 4e laan 18 bis'
match = re.search(r'(\d+)\D*$', my_string)
if match:
number = int(match.group(1)) # gives here: number = 18
else:
print("no digits found")
正则表达式的解释:
一个或多个数字(带分组括号,以便我们可以使用(\d+)
提取它们).group(1)
-零个或多个非数字字符\D*
-字符串的结尾$