在Python中查找字符串中的独立整数

2024-10-03 15:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个函数,它接收一条街道加上一个门牌号,可能还有一个加法,然后返回门牌号。我可以简单地提取整数,但问题是街道名称本身可能有一个整数。例如: my_string = 'Hendrik 4e laan 18 bis'

在这种情况下,我想返回: street_name = 'Hendrik 4e laan', street_number = 18, street_number_addition = 'bis'

我不能简单地拆分空格上的字符串并取最后一个整数([x for x in my_string.split() if x.isdigit()][-1]),因为streetnumber加法可能附加到streetnumber(例如18bis或18b)

因此,我如何获得[4, 18]的列表,这样我就可以简单地获取最后一项


Tags: 函数name名称streetnumberstringmy情况
2条回答

这对我很有用:

>>> 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*-零个或多个非数字字符
  • $-字符串的结尾

相关问题 更多 >