Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中查找字符串中的独立整数_Python_List_Integer - Fatal编程技术网

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

事实上,你不需要括号,因为你得到了整个匹配,而不考虑任何组。事实上,你不需要括号,因为你得到了整个匹配,而不考虑任何组。