python3 unicode字符串比较

python3 unicode字符串比较,python,string,python-3.x,equals,string-comparison,Python,String,Python 3.x,Equals,String Comparison,我有一个来自进程输出的字符串,它似乎是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>.*)#i

我有一个来自进程输出的字符串,它似乎是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() == 'na')
python版本是python 3.6.5


我需要一些关于如何比较这两个字符串的帮助。

如果比较
u'na'
(由于速度更快,应该优先选择)不是一个选项,您可以在比较之前对unicode字符串进行utf-8编码

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')
proc=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)
(out,err)=进程通信()
结果=重新匹配(r’#title#(?P.*)艺术家#(?P.*)轨道#(?P.*)islive#(?P.*),输出解码(“utf-8”))
如果结果为:
打印(结果组('islive'))
打印('na')
打印(result.group('islive').lower().encode('utf8')=='na')

如果您打印(repr(result.group('islive').lower()),以准确了解您得到了什么?它用.encode('utf8')打印“u'na'”,但仍然不相等,是字符串u'na'?执行此操作时得到了什么?打印(“{}”。格式(result.group('islive')))“u'na'”这就是我得到的解释。字符串通常是“u'NA”,而不是unicode字符NAresult.group('islive').lower().encode('utf8')==“u'NA'),因为字符串是u'NA'而不是NA
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')