【问题标题】:Find separate integers in string in Python在 Python 中查找字符串中的单独整数
【发布时间】:2020-11-27 16:44:29
【问题描述】:

我正在创建一个函数,它接受街道加门牌号,可能还有一个加法并返回门牌号。我可以简单地提取整数,但问题是街道名称本身可能有一个整数。例如: 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]),因为街道编号可能会附加到街道编号(例如 18bis 或 18b)。

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

【问题讨论】:

    标签: python list integer


    【解决方案1】:

    这对我有用:

    >>> import re
    >>> my_string = 'Hendrik 4e laan 18 bis'
    >>> re.findall( r'(\d+)', my_string )
    ['4', '18']
    >>> 
    

    【讨论】:

    • 事实上你不需要括号,因为你得到了整个匹配,不管任何组。
    【解决方案2】:

    如果您知道您只想要最后一次出现,那么另一个选项,而不是找到所有这些(您可以使用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* - 零个或多个非数字字符
    • $ - 字符串结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      相关资源
      最近更新 更多