сравнение строк в юникоде python3 - PullRequest
0 голосов
/ 27 июня 2018

У меня есть строка, полученная из вывода процесса, которая выглядит как Юникод, и я не могу сравнить ее с «нормальной» строкой.

Вот код:

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
result = re.match(r'#title#(?P<title>.*)#artist#(?P<artist>.*)#track#(?P<track>.*)#islive#(?P<islive>.*)', out.decode("utf-8"))
if result:
    print(result.group('islive'))
    print('na')

    print(result.group('islive').lower() == 'na')

Выход:

u'NA'
na
False

Версия Python - Python 3.6.5.

Мне нужна помощь в сравнении этих двух строк.

1 Ответ

0 голосов
/ 27 июня 2018

Если сравнение с u'na' (что предпочтительнее из-за более быстрой работы) не является опцией, вы можете utf-8 кодировать строку unicode перед сравнением.

proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
result = re.match(r'#title#(?P<title>.*)#artist#(?P<artist>.*)#track#(?P<track>.*)#islive#(?P<islive>.*)', out.decode("utf-8"))
if result:
    print(result.group('islive'))
    print('na')

    print(result.group('islive').lower().encode('utf8') == 'na')
...