首页 > 解决方案 > 获取字符之间的字符串段

问题描述

我有一个巨大的数据集,其中包含许多文件名以及我需要抓取的字符串的各个部分。

我目前有这个代码段:

def fps(data):
for i in data:
    pattern = r'.(\d{4}).' # finds data in between the periods
    frames = re.findall(pattern, ' '.join(data)) #puts info into frames list
    frames.sort()
for i in range(len(frames)): #Turns the str into integers
    frames[i] = int(frames[i])
return frames

这很好,但它只在句点前后返回 4 个字符。我将如何在一个句点之后和下一个句点之前抓住部分字符串。最好不要使用常规编辑,因为它对于像我这样的傻瓜来说有点太复杂了。

例如:一个字符串可能看起来像这样

string = ['filename.0530.extension']

而其他的可能看起来像这样

string2 = ['filename.042.extension']
string3 = [filename.045363.extension']

我需要在终端的周期之间输出数字,所以:0530、042、045363

标签: regexpython-3.x

解决方案


要匹配您的示例数据,您可以匹配一个点,在一组中捕获一个或多个数字\d+(而不是正好 4 \d{4}),然后匹配一个点:

\.(\d+)\.

如果要匹配点之间的所有点,可以使用否定字符类[^.]来匹配点:

\.([^.]+)\.

请注意,如果要匹配文字点,则应将其转义\.

演示


推荐阅读