certo...

Incollo la risposto di un utente di un forum di python:

Danno tutti lo stesso risultato:
leggi sorgentecopia negli appuntistampa?


  • >>> import re
  • >>> re.sub(r'(.*)', r'1', 'Prova')
  • '1'
  • >>> re.sub('(.*)', '1', 'Prova')
  • '1'
  • >>> re.sub(r'' + '(.*)', r'' + '1', 'Prova')
  • '1'



Probabilmente hai ridotto il tuo problema a un esempio minimale che però non lo riproduce più. Credo che il tuo problema sia invece che matches['a'] contiene dei backslash. Allora le due forme non sono equivalenti. Infatti non esiste un tipo di stringa "raw" diverso da str. Quando scrivi
leggi sorgentecopia negli appuntistampa?


  • r'' + matches['a']


non stai convertendo la tua stringa a una stringa "raw", perché è già una stringa e tale rimane. Osserva la differenza:
leggi sorgentecopia negli appuntistampa?


  • >>> print('a\tb')
  • a b
  • >>> print('a\\tb')
  • a\tb
  • >>> print(r'a\tb')
  • a\tb
  • >>> print(r'' + 'a\tb')
  • a b
  • >>> print(r'' + 'a\\tb')
  • a\tb
  • >>> print(r'' + r'a\tb')
  • a\tb
  • >>> print('' + r'a\tb')
  • a\tb
  • >>> print('' + 'a\\tb')
  • a\tb
  • >>> print('' + 'a\tb')
  • a b