UnicodeWarning при сравнении строк Unicode с результатами Unicode из команды os.walk - PullRequest
0 голосов
/ 07 июня 2011

Использование python 2.7 Я делаю os.walk с этими файлами http://www.2shared.com/file/biSx7NI-/comer.html, а затем сравниваю результат с массивом.В реальной программе этот массив не будет предопределен.Код, который я пытаюсь использовать, выглядит следующим образом:

# -*- coding: utf-8 -*-
import os.path
group = ['comer.txt', 'coma.txt', 'comamos.txt', 'coman.txt', 'comas.txt', 'come.txt', 'comed.txt', 'comemos.txt', 'comen.txt', 'comeremos.txt', 'comer\xc3\xa1.txt', 'comer\xc3\xa1n.txt', 'comer\xc3\xa1s.txt', 'comer\xc3\xa9.txt', 'comer\xc3\xa9is.txt', 'comer\xc3\xada.txt', 'comer\xc3\xadais.txt', 'comer\xc3\xadamos.txt', 'comer\xc3\xadan.txt', 'comer\xc3\xadas.txt', 'comes.txt', 'comido.txt', 'comiendo.txt', 'comiera.txt', 'comierais.txt', 'comieran.txt', 'comieras.txt', 'comiere.txt', 'comiereis.txt', 'comieren.txt', 'comieres.txt', 'comieron.txt', 'comimos.txt', 'comiste.txt', 'comisteis.txt', 'comi\xc3\xa9ramos.txt', 'comi\xc3\xa9remos.txt', 'comi\xc3\xb3.txt', 'como.txt', 'com\xc3\xa1is.txt', 'com\xc3\xa9is.txt', 'com\xc3\xad.txt', 'com\xc3\xada.txt', 'com\xc3\xadais.txt', 'com\xc3\xadamos.txt', 'com\xc3\xadan.txt', 'com\xc3\xadas.txt', 'comer\xc3\xa1.txt', 'comer\xc3\xa9.txt', 'comer\xc3\xada.txt', 'comer\xc3\xadais.txt']

print "********what we have*********"
i=0
for f in group:
    group[i] = os.path.basename(f)
    group[i] = unicode(group[i], "utf-8")        
    print group[i]
    i += 1

wantedResults = []
print "********what we want*********"
for(path, dirs, files) in os.walk("C:\corpus\zz-auto generated\spanish\comer"):
    wantedResults.append(files)
for f in wantedResults[0]:
    print f

print "********problems*********"
for resultWanted in wantedResults[0]:
    if resultWanted not in group:
        print "did not match our wanted results: " + resultWanted
for result in group:
    if result not in wantedResults[0]:
        print "extra file: " + result

Я получаю эту ошибку:

Предупреждение (из модуля предупреждений): Файл "C: \ Users *** \ Desktop \ osWalkTest.py ", строка 26, если результат не в wantedResults [0]: UnicodeWarning: при сопоставлении с Unicode не удалось преобразовать оба аргумента в Unicode -> интерпретировать их как неравные

Iдействительно может использовать некоторую помощь в получении предопределенного массива и массива из os.walk для правильного сравнения.Я посмотрел это в Google и перепробовал множество комбинаций кодирования и декодирования двух массивов, но, похоже, ничего не работает.Спасибо.

1 Ответ

1 голос
/ 07 июня 2011

Вы пробовали (обратите внимание на 'u' перед строкой, которая превращает его в Unicode):

for(path, dirs, files) in os.walk(u"C:/corpus/zz-auto generated/spanish/comer"):

(обратите внимание, что обратная косая черта в строке не очень хорошая идея, Unicode или нет).

...