Я пытаюсь преобразовать токенизированный список строк в список подходящих типов. Эта функция, typeChange, вызывается для того, чтобы возвратить правильно напечатанную версию строки.
Мой код до сих пор выполняет все следующие действия, кроме последнего случая. Есть ли простой способ исправить эту проблему?
Например:
"1" -> 1
"True" -> True
"\str" -> "\str"
"[1 2 3 4 5]" -> [1,2,3,4,5]
"[1 2 3 4 5 x]" -> [1,2,3,4,5,"x"]
Это функция typeChange для моего упрощенного интерпретатора PostScript.
def typeChange(c):
try:
if '[' in c: # checking if it is a list, for some reason can't do or ']', because ints return as a list
retList = list(map(int, (c.strip('][').split(' '))))
return (len(retList), retList)
if c=='True':
return True
elif c=='False':
return False
return int(c)
except:
return c
Мой ожидаемыйвсе результаты работают для всех предоставленных случаев, кроме случаев, когда строка / переменная находится внутри списка:
Ожидается: '[1 x 2 3 4]'
-> [1,"x",2,3,4]
Факт: '[1 x 2 3 4]'
-> '[1 x 2 3 4]'