Python字符串,找到特定的单词,然后在

2024-05-02 02:36:29 发布

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

我做这种手术有问题,比如说我们有一根绳子

teststring = "This is a test of number, number: 525, number: 585, number2: 559"

我想把525和585存储到一个列表中,怎么做?

我用了一种非常愚蠢的方法,但肯定有更好的方法

teststring = teststring.split()
found = False
    for word in teststring:
        if found:
            templist.append(word)
            found = False
        if word is "number:":
            found = True

有regex的解决方案吗?

如果我想储存525585和559呢?


Tags: of方法testfalsenumber列表ifis
3条回答

你可以试试这个:

import re
[int(x) for x in re.findall(r' \d+', teststring)]

它会给你:

[525, 585, 559]

您可以使用regex组来实现这一点。下面是一些示例代码:

import re
teststring = "This is a test of number, number: 525, number: 585, number2: 559"
groups = re.findall(r"number2?: (\d{3})", teststring)

groups然后包含数字。此语法使用正则表达式组。

使用^{}模块:

>>> re.findall(r'number\d*: (\d+)',teststring)
['525', '585', '559']

\d是任何数字[0-9]
*表示从0到无限次
()表示要捕获的内容
+表示从1到无限次

如果需要将生成的字符串转换为ints,请使用^{}

>>> map(int, ['525', '585', '559'])
[525, 585, 559]

或者

list comprehension

>>> [int(s) for s in ['525', '585', '559']]
[525, 585, 559]

相关问题 更多 >