如果该模式包含字符“ ai”或“ hi”,请用* \ *
替换接下来的三个字符string = """
Or help one fainting robin
Unto his nest again,
I shall not live in vain
"""
输出应为:
或帮助一位辉人* \ * ng罗宾
再次嗨起来\\ * est,
我不会白费。
答案 0 :(得分:6)
使用re.sub
:
re.sub(r"([ah]i).{3}", r"\1*/*", string)
答案 1 :(得分:1)
尝试
import re
strings_to_find = ['ai', 'hi']
data = 'Or help one fainting robin Unto his nest again'
for string_to_find in strings_to_find:
offsets = [m.start() for m in re.finditer(string_to_find, data)]
for offset in offsets:
data = data[:offset + len(string_to_find)] + '*\*' + data[offset + len(string_to_find) + 3:]
print(data)
答案 2 :(得分:1)
您需要检查当前字符是“ a”,下一个是“ i”还是其他选项(“ h”和“ i”)。
让我们做一些代码:
string = "Or help one fainting robin Unto his nest again, I shall not live in vain"
string_new = string.split()
>>> string_new
['Or', 'help', 'one', 'fainting', 'robin', 'Unto', 'his', 'nest', 'again,', 'I', 'shall', 'not', 'live', 'in', 'vain']
for phrase in string_new:
for i in range(len(phrase)):
if (phrase[i] == "a" and phrase[i+1] == "i") or (phrase[i] == "h" and phrase[i+1] == "i"):
print(phrase)
我将String拆分为一个新的String(将空格分为一个String和另一个,从而得到了String的向量)。
接下来,我将使用第一个for
逐个字符串地运行向量。对于第二个,我按字符运行整个字符串char。然后,我进行一些检查以确定我的字符串是否具有“ ai”或“ hi”。如果字符串中包含其中一些字符,则将它们打印出来。
现在,您只需将所需的字符更改为相应的字符