gpt4 book ai didi

python - 正则表达式 "dynamic"替换

转载 作者:行者123 更新时间:2023-12-04 16:24:05 24 4
gpt4 key购买 nike

我有一个多行字符串,需要在每行的开头附加一个(可变)字符(1 个空格作为分隔符)。我怎么能用正则表达式做到这一点?有没有办法在没有太多拆分和合并的情况下做到这一点?

假设行数等于要添加的字符数。

输入

m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""

期望的输出(假定引用字符串“bip”)

b 0 1 2 3 4 5
i 1 0 1 2 3 4
p 2 1 1 2 3 4

这里是一个基于 \n 匹配的工作代码示例

import re

m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""

re.sub(r'\n', '\n{} ', m[:-1]).format(*list('bip'))

但我需要省略最后一个字符,它会 \n。我尝试使用其他模式,例如 \A\^^, flags=re.MULTILINE 但没有成功。

如何避免字符串切片m[:-1]

有没有更的正则​​表达式方法来解决问题?

最佳答案

这是另一种方法 using 4th parameter count of re.sub这说明要进行多少次替换:

根据链接文档:

re.sub(pattern, repl, string, count=0, flags=0)

代码:

import re

m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""
repl = 'bip'

print (re.sub(r'\n', '\n{} ', m, len(repl)).format(*list(repl)))

# or use this if you want to strip leading and trailing newlines
# print (re.sub(r'\n', '\n{} ', m, len(repl)).format(*list(repl)).strip())

Code Demo

输出:

b 0 1 2 3 4 5
i 1 0 1 2 3 4
p 2 1 1 2 3 4

关于python - 正则表达式 "dynamic"替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68758568/

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