Hi Ole, On 2013-11-11 12:05, Olе Streicher wrote:
Das Problem sind hier die fehlenden Backslashes am Ende der fortgesetzten Zeilen. Wie bekomme ich die dahin?
ich weiß nicht, ob ich es nicht noch einfacher geht, aber spontan fällt mir `re.sub` mit `MULTILINE`-Flag ein: In [1]: import re In [2]: text = """Dies ist ein ...: mehrzeiliger ...: Text.""" In [7]: print re.sub("$", " \\\\", text, flags=re.MULTILINE) Dies ist ein \ mehrzeiliger \ Text. \ Den Backslash am Ende kannst du folgendermaßen loswerden: In [9]: text2 = re.sub("$", " \\\\", text, flags=re.MULTILINE) In [10]: print text2 Dies ist ein \ mehrzeiliger \ Text. \ In [11]: print re.sub(r"[\s\\]+$", "", text2) Dies ist ein \ mehrzeiliger \ Text. (hier _ohne_ `MULTILINE`-Flag). Was _mich_ jetzt nur noch interessiert, ist, warum ich für den Ersetzungs-String _vier_ Backslashes schreiben muss. Ich hatte es mit zwei Backslashes versucht, aber bakam dann: In [6]: print re.sub("$", " \\", text, flags=re.MULTILINE) --------------------------------------------------------------------------- error Traceback (most recent call last) <ipython-input-6-25bd5b1b5476> in <module>() ----> 1 print re.sub(r"$", " \\", text, flags=re.MULTILINE) /usr/lib64/python2.7/re.pyc in sub(pattern, repl, string, count, flags) 149 a callable, it's passed the match object and must return 150 a replacement string to be used.""" --> 151 return _compile(pattern, flags).sub(repl, string, count) 152 153 def subn(pattern, repl, string, count=0, flags=0): /usr/lib64/python2.7/re.pyc in _subx(pattern, template) 268 def _subx(pattern, template): 269 # internal: pattern.sub/subn implementation helper --> 270 template = _compile_repl(template, pattern) 271 if not template[0] and len(template[1]) == 1: 272 # literal replacement /usr/lib64/python2.7/re.pyc in _compile_repl(*key) 255 p = sre_parse.parse_template(repl, pattern) 256 except error, v: --> 257 raise error, v # invalid expression 258 if len(_cache_repl) >= _MAXCACHE: 259 _cache_repl.clear() error: bogus escape (end of line) Ich habe auch festgestellt, dass ich statt re.sub("$", " \\\\", text, flags=re.MULTILINE) auch re.sub("$", r" \\", text, flags=re.MULTILINE) schreiben kann. Aber das ist nicht weniger "mysteriös". Viele Grüße Stefan