我有一个路径字符串“... \\ 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>'
答案 0 :(得分:2)
当您定义要插入的字符串时,请在其前面加上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'