我有一个字符串:
str1 = "abc = def"
我想把它转换成:
str2 = "abc = #Abc#"
我正在尝试:
re.sub("(\w+) = (\w+)",r"\1 = %s" % ("#"+str(r"\1").title()+"#"),str1)
但它返回:(没有完成字符串操作)
"abc = #abc#"
.title()
不工作的可能原因是什么?- 如何在python中对捕获的组进行字符串操作?
最佳答案
你可以在一个小函数的帮助下看到发生了什么:
import re
str1 = "abc = def"
def fun(m):
print("In fun(): " + m)
return m
str2 = re.sub(r"(\w+) = (\w+)",
r"\1 = %s" % ("#" + fun(r"\1") + "#"),
# ^^^^^^^^^^
str1)
哪个产量
In fun(): \1
所以您基本上要做的是将 \1
(不是 替代品!)更改为大写版本,显然仍然是 \1
字面意思。 \1
仅在 稍后 被捕获的内容替换,而不是调用 str.title()
。
按照@Rakesh 的建议使用 lambda 函数。
关于python - Python 中捕获组的字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50999017/