如何在字符串中间抓取数字?(Python)

如何在字符串中间抓取数字?(Python),python,regex,Python,Regex,在一个字符串中有多行。其中一行重复,但每次的编号不同。我想知道我怎样才能把数字存储在这些行中。数字将始终位于行中的相同位置,但可以是任意位数 编辑:随机字符串中也可以包含数字。使用正则表达式: random string this is 34 the string 3 that, i need 234 random string random string random string random string random string this is 1 the string 34 tha

在一个字符串中有多行。其中一行重复,但每次的编号不同。我想知道我怎样才能把数字存储在这些行中。数字将始终位于行中的相同位置,但可以是任意位数


编辑:随机字符串中也可以包含数字。

使用正则表达式:

random string
this is 34 the string 3 that, i need 234
random string
random string
random string
random string

random string
this is 1 the string 34 that, i need 22
random string
random string
random string
random string

random string
this is 35 the string 55 that, i need 12
random string
random string
random string
random string

通过使用正则表达式

>>> import re
>>> comp_re = re.compile('this is (\d+) the string (\d+) that, i need (\d+)')
>>> s = """random string
this is 34 the string 3 that, i need 234
random string
random string
random string
random string

random string
this is 1 the string 34 that, i need 22
random string
random string
random string
random string

random string
this is 35 the string 55 that, i need 12
random string
random string
random string
random string
"""
>>> comp_re.findall(s)
[('34', '3', '234'), ('1', '34', '22'), ('35', '55', '12')]

假设
s
是整个多行字符串,您可以使用如下代码

import re
s = """random string
this is 34 the string 3 that, i need 234
random string
random string
random string
"""
re.findall('this is (\d+) the string (\d+) that, i need (\d+)', s)    
这将为您提供一个列表列表,每个包含整数的行都有一个整数列表。如果您想要所有数字的单一列表,请使用

my_list = []
for line in s.splitlines():
    ints = filter(str.isdigit, line.split())
    if ints:
          my_list.append(map(int, ints))

使用正则表达式。pydoc reSorry我应该提到这一点,但其他随机字符串中也可能有数字。@Takkun你怎么知道你对哪些行感兴趣?感兴趣的文本是这样的一个35字符串55,我需要12-所以我认为我的正则表达式是你想要的
my_list = [int(i) for line in s.splitlines()
           for i in filter(str.isdigit, line.split())]