Ich habe eine Zeile in der Datei: 'einige Text/einige/Pfad' wo Pfad kann sowohl relative oder absolute sein. Ich möchte es durch einen absoluten Pfad ersetzen. Ich versuchte dies:Python: re mit os.path.abspath
re.sub('some text (.*)','some text {}'.format(os.path.abspath(r'\1')),line)
jedoch der gefundene String als Dateinamen ohne Pfad zu sehen ist und die resultierende Zeichenfolge /path/to/die/Datei // some/path
Im Grunde ist es ist 'path/to/the/file /' + 'matched_string' sowohl für relative als auch für absolute Pfade. Wenn ich os.path.abspath außerhalb von re verwenden, gibt es den richtigen Pfad.
Wie kann ich das beheben?
#!/usr/bin/env python
import os, re
os.chdir('/tmp/')
line='some text .'
print(re.sub('some text (.*)',
lambda match: 'some text {}'.format(os.path.abspath(match.group(1))),
line))
... richtig als Ausgabe emittiert:
Danke, Ivan
Sie rufen 'abspath()' auf der wörtlichen str ing '' 1 '', was wahrscheinlich nichts Nützliches bewirkt. Wahrscheinlich möchten Sie es auf das Ergebnis von 're()' anwenden. – jasonharper