如何替换接下来的三个字符?

时间:2019-03-16 14:35:43

标签: python python-3.x string replace

如果该模式包含字符“ ai”或“ hi”,请用* \ *

替换接下来的三个字符
string = """
Or help one fainting robin
Unto his nest again,
I shall not live in vain
"""

输出应为:

  

或帮助一位辉人* \ * ng罗宾
  再次嗨起来\\ * est,
  我不会白费。

3 个答案:

答案 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”。如果字符串中包含其中一些字符,则将它们打印出来。

现在,您只需将所需的字符更改为相应的字符