Okay donc j'ai un problème semi-weridish avec re.sub.Sous-problèmes d'expression régulière
Prenez le code suivant:
import re
str_to_be_subbed = r'somefile.exe -i <INPUT>'
some_str = r'C:\foobar'
s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
print s
Je pense qu'il me donnerait:
somefile.exe -i C:\\foobar
Mais au lieu de cela me donne:
somefile.exe -i C:♀oobar
Je sais que \ f est un échapper à l'omble, mais même si j'essaie de le faire de cette façon, ce qui devrait échapper aux caractères spéciaux. Même si je fais ceci:
print r'%s' % s
Il me donne encore ceci:
somefile.exe -i C:♀oobar
Pourquoi fait-il cela? Et quel est le meilleur moyen d'éviter cela?
Ninja Edit:
Si je regarde la valeur de s est:
'somefile.exe -i C:\x0coobar'
Pourquoi a fait \ tour f dans \ x0. Pouah.
Edit:
une question, si je modifie le code à ceci:
import re
import os
str_to_be_subbed = r'somefile.exe -i <INPUT>'
some_str = os.path.abspath(r'C:\foobar')
some_str
s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
print s
Donne-moi:
>>> import re
>>> import os
>>> str_to_be_subbed = r'somefile.exe -i <INPUT>'
>>> some_str = os.path.abspath(r'C:\foobar')
>>> some_str
'C:\\foobar'
>>> s = re.sub(r'\<INPUT\>', some_str, str_to_be_subbed)
>>> print s
somefile.exe -i C:♀oobar
Maintenant, pourquoi est-ce. Depuis os.path.abspath échappe les \ 's. Pourquoi re.sub encore gâcher?
Il s'agit également d'un très petit exemple, de ce petit problème qui vient de surgir au hasard dans une application ancienne. Je ne peux pas vraiment aller et changer cela à string.replace à cause de comment sa configuration sans passer une journée entière.
Je suis juste vraiment curieux de savoir pourquoi il le fait. Pour le problème ci-dessus.
Merci. Encode fonctionne étonnamment. – UberJumper