gpt4 book ai didi

python - regex.sub 意外地用某种编码修改了替换字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 11:17:46 25 4
gpt4 key购买 nike

我有一个路径字符串“...\\JustStuff\\2017GrainHarvest_GQimagesTestStand\\...”,我正在将其插入到现有文本文件中以代替另一个字符串。我编译一个正则表达式模式并找到边界文本以获取要插入的位置,然后使用 regex.sub 替换它。我正在做这样的事情......

with open(imextXML, 'r') as file:
filedata = file.read()
redirpath = re.compile("(?<=<directoryPath>).*(?=</directoryPath>)", re.ASCII)
filedatatemp = redirpath.sub(newdir,filedata)

虽然插入的文本乱七八糟,“\\20”被替换为“\x8”,“\\”被替换为“\”(单斜线)

即“...\\JustStuff\\2017GrainHarvest_GQimagesTestStand\\...”变成“...\\JustStuff\x817GrainHarvest_GQimagesTestStand\...”

我在这里缺少什么简单的东西来修复它?

更新:

进一步分解以复制和粘贴以重现问题...

t2 = r'\JustStuff\2017GrainHarvest_GQimagesTestStand\te'
redirpath = re.compile("(?<=<directoryPath>).*(?=</directoryPath>)", re.ASCII)
temp = r"<directoryPath>aasdfgsdagewweags</directoryPath>"
redirpath.sub(t2,temp)

产生...

>>'<directoryPath>\\JustStuff\x817GrainHarvest_GQimagesTestStand\te</directoryPath>'

最佳答案

当您定义要插入的字符串时,在其前面加上r 以表明它是一个raw string literal。 :

>>> rex = re.compile('a')
>>> s = 'path\\with\\2017'
>>> sr = r'path\\with\\2017'
>>> rex.sub(s, 'ab')
'path\\with\x817b'
>>> rex.sub(sr, 'ab')
'path\\with\\2017b'

关于python - regex.sub 意外地用某种编码修改了替换字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48738342/

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