Как преобразовать «re.search (pattern, match_string, re.L)» в Python 2 и Python 3 совместимые коды? - PullRequest
0 голосов
/ 18 июня 2019

Это оригинальный код Python2:

def _MatchOrDefault(pattern, match_string, default=None, flag=re.L):
  match = re.search(pattern, match_string, flag)

Но в Python3 он будет выдавать сообщение «ValueError: не может использовать флаг LOCALE с шаблоном str» для поиска строки.

Является лиследуя правильному пути, или существует более питонский способ рефакторинга, чтобы он был совместим как с python2, так и с python3?

import six
def _MatchOrDefault(pattern, match_string, default=None, flag=re.L):
  if not flag:
    if isinstance(match_string, six.text_type):
      flag = re.UNICODE
    else:
      flag = re.L
  match = re.search(pattern, match_string, flag)
...