Okay, also habe ich ein halbwerdisches Problem mit re.Regulärer Ausdruck Subprobleme
Nehmen Sie den folgenden Code ein:
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
Ich denke, es wäre würde mir geben:
somefile.exe -i C:\\foobar
Aber anstatt es gibt mir:
somefile.exe -i C:♀oobar
Ich weiß, \ f ein Escape char, aber auch wenn ich versuche es so zu machen, was den speziellen Charakteren entgehen sollte. Auch wenn ich dies tun:
print r'%s' % s
Es gibt mir immer noch so:
somefile.exe -i C:♀oobar
Warum es dies tut? Und was ist der beste Weg, dies zu vermeiden?
Ninja Edit:
Wenn i auf den Wert von s aussehen es ist:
'somefile.exe -i C:\x0coobar'
Warum \ f wiederum in \ x0 tat. Pfui.
Edit:
Noch eine Frage, wenn ich den Code auf diese ändern:
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
Gibt mir:
>>> 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
Nun, warum das so ist. Seit os.path.abspath entkommt der \ 's. Warum versagt re noch?
Auch dies ist ein wirklich kleines Beispiel dieses kleinen Problems, das zufällig in einer alten Anwendung auftaucht. Ich kann nicht wirklich gehen und dies zu string.replace wegen seiner Einrichtung ändern, ohne einen ganzen Tag zu verbringen.
Ich bin nur wirklich neugierig, warum es das tut. Für das obige Problem.
Danke. Encode funktioniert erstaunlich. – UberJumper