gpt4 book ai didi

python - 如何根据多个条件提取子串?

转载 作者:行者123 更新时间:2023-12-01 22:56:19 26 4
gpt4 key购买 nike

我有数千个字符串按以下方式排列:

>String1 \(sub1|string1)
DIMMFIOYBVSYBE
EFMWUISCFIUBFMCIUOEFMIUIDEM

>String2 \(sub2|string2)
HVUYVMUYBOIIUMYTVU
SYOYVSCOUYCVUYVSUYVUSC

我想根据某些条件提取一些子串,这样应该提取下面的子串。子字符串将是:

String1:

DIM        X
M X
FIOYBVS
YBEEFM
WUISC X
FIUBFMC X
IUOEFM
IUIDEM

String2:

HVUYVM
UYBOIIUM
YTVUS
YOYVSC X
OUYCVUYVS X
UYVUSC X

条件是:

  1. 子字符串应以 MS 结尾
  2. MS 不应由 C
  3. 继承
  4. 子串的长度应为≥4≤8个字符

在上面的子字符串示例列表中,标记的 X 将不被考虑,因为它们不符合条件。

预期输出:

Name    Frequency    substrings
String1 4 FIOYBVS; YBEEFM; IUOEFM; IUIDEM
String2 3 HVUYVM; UYBOIIUM; YTVUS

我尝试使用提到的滑动窗口方法 here .它对我不起作用。任何帮助表示赞赏。

最佳答案

以下需要两遍,但满足您规定的条件:

import re

for name, string in (
('String1', 'DIMMFIOYBVSYBEEFMWUISCFIUBFMCIUOEFMIUIDEM'),
('String2', 'HVUYVMUYBOIIUMYTVUSYOYVSCOUYCVUYVSUYVUSC'),
):
candidates = re.findall('[^MS]*[MS]C?', string)
matches = [item for item in candidates
if 4 <= len(item) <= 8 and not item.endswith('C')]
print(f'{name}: {len(matches)} {"; ".join(matches)}')

输出:

String1:    4    FIOYBVS; YBEEFM; IUOEFM; IUIDEM
String2: 3 HVUYVM; UYBOIIUM; YTVUS

关于python - 如何根据多个条件提取子串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73174308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com