繁体   English   中英

如何在字符串中添加字符串?

[英]How can I add a string inside a string?

问题很简单,我得到了一个随机字符串和一个随机模式,我被告知要获取字符串中出现的该模式的所有可能组合,然后在开头用 [target] 和 [endtarget] 标记和结尾。

例如:

给定以下文本:“XuyZB8we4”

和以下模式:“XYZAB”

预期的 output 将是:“[target] X [endtarget]uy[target] ZB [endtarget]8we4”。

我已经得到了识别所有单词的部分,但我找不到将 [target] 和 [endtarget] 字符串放在模式前后的方法(在代码匹配中调用)。

import re


def tagger(text, search):
    place_s = "[target]"
    place_f = "[endtarget]"
    pattern = re.compile(rf"[{search}]+")
    matches = pattern.finditer(text)

    for match in matches:
        print(match)

    return test_string


test_string = "alsikjuyZB8we4 aBBe8XAZ piarBq8 Bq84Z "
pattern = "XYZAB"

print(tagger(test_string, pattern))

我也用 sub 方法尝试了 for,但我无法让它工作。

    for match in matches:
        re.sub(match.group(0), place_s + match.group(0) + place_f, text)

    return text

re.sub允许您将反向引用传递给模式中的匹配组。 所以你确实需要将你的模式括在括号中,或者创建一个命名组,然后它会立即用你想要的替换替换整个字符串中的所有匹配项:

In [10]: re.sub(r'([XYZAB]+)', r'[target]\1[endtarget]', test_string)
Out[10]: 'alsikjuy[target]ZB[endtarget]8we4 a[target]BB[endtarget]e8[target]XAZ[endtarget] piar[target]B[endtarget]q8 [target]B[endtarget]q84[target]Z[endtarget] '

使用这种方法,根本不需要re.finditer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM