python - Python re.sub 将部分字符串更改为 ascii
问题描述
test1 = "<test>222</test>blah blah blah"
newVal = "222"
mstring = "(<test>).*(</test>)"
newString = re.sub(mstring,rf"\1{newVal}\2",test1)
print(newString)
我试图在我的字符串中找到一个特定的值,并使用 re.sub 函数替换为不同的字符串。似乎我找到了正确的匹配并且替换正在工作,但是 python 正在将部分字符串转换为其 ascii 等效值。你能帮我用上面的代码吗,以便我产生下面的输出
<test>222</test>blah blah blah
相反,我得到了低于结果
R2</test>blah blah blah
解决方案
这是一个可能的解决方案:
test1 = "<test>222</test>blah blah blah"
newVal = "111"
mstring = "(<test>).*(</test>)"
newString = re.sub(mstring, f'\g<1>{newVal}\g<2>', test1)`
print(newString) # <test>111</test>blah blah blah
例如,您的方法适用newVal
于一封信:
newVal = "a"
re.sub(mstring, f'\1{newVal}\2', test1) # <test>a</test>blah blah blah
这种奇怪的行为是由于\1{newVal}
(with newVal=333
) 将被解释为对组 1333 的引用。\g<1>
语法等效于\1
,但在替换中并不模棱两可。
推荐阅读
- javascript - 如何设置一个按钮来执行一个for循环?
- swift - 如何在swift中从2个字符串中调用一个变量
- http - 监听数据时出现 HttpClientResponse 错误
- python - 如何将随机位置 (x,y) 分配给变量
- javascript - 将 d3 升级到 v5 后,Topojson 地图倒置
- javascript - 如何检查数组中的文本变量是否包含来自另一个数组的每个值的最多文本?
- llvm - 让 LLVM 根据平台选择 int 大小
- javascript - 当id是动态的时如何知道选择了哪个视频,从rest api获取视频列表
- netty - DomainNameMapping 匹配无效?
- c++ - 为什么 C++ boost 库中的累加器具有类似函数的接口?