Я хочу проверить юникод в dict python

Я попытался попробовать блок cat, чтобы проверить словарь в словаре, а список в словаре имеет юникод или нет.

def convert(input):
 if isinstance(input, dict):
     for key, value in input.iteritems():
        temp = {convert(key):convert(value)}
        return temp
 elif isinstance(input, list):
     for element in input:
         temp1 = [convert(element)]
        return temp1
 elif isinstance(input, unicode):
    return input.encode('utf-8')
 else:
    #return input
    print input

Я хочу получить результат от этой функции, если есть юникод, элемент в словаре или элемент закодирован с помощью utf8. Но у меня такая ошибка:

$python main.py
  File "main.py", line 21
    return temp1
               ^
IndentationError: unindent does not match any outer indentation level

Отступ определяет блочную структуру в Python. Когда вы убираете отступ, строка без отступа должна совпадать с предыдущим уровнем отступа. Ваш оператор return имеет неправильный отступ.

kindall 11.02.2019 06:18
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отступы похожи на фигурные скобки, если вы знакомы с ними всякий раз, когда вы объявляете блок, например циклы if elsefor, определение class или определение function, он ожидает найти уровень отступа, равный пробелу или табуляции, тот же уровень отступа обрабатывает его как один блок. Если вы хотите вложенный блок, вы сделать так:

 def myfunction(arg): #one block
     for x in range(0,arg): #indents at starting
         if x==1:#another block
            print('one')#more indents for nesting

так в вашем коде

def convert(input):
 if isinstance(input, dict):
     for key, value in input.iteritems():
        temp = {convert(key):convert(value)}
        return temp
 elif isinstance(input, list):
     for element in input:
         temp1 = [convert(element)]
        return temp1 #here it expects to be in same indent level temp1 = [convert(element)] is at
 elif isinstance(input, unicode):
     return input.encode('utf-8')
 else:
     #return input
     print input

это исправлено в ответе @Andronicus

Другие вопросы по теме