a='\nu + \lambda + \theta'
d=a.encode('string_escape').replace('\\\\','\\')
print(d)
# \nu + \lambda + \theta
Это показывает, что перед n
, l
и t
и *1004*:
print(list(d))
# ['\\', 'n', 'u', ' ', '+', ' ', '\\', 'l', 'a', 'm', 'b', 'd', 'a', ' ', '+', ' ', '\\', 't', 'h', 'e', 't', 'a']
стоит один обратный слеш.Вот простой пример получения некоторого пользовательского ввода через Tkinter.Entry
.Обратите внимание, что полученный текст имеет только одну обратную косую черту перед n
, l
и t
.Таким образом, дополнительная обработка не требуется:
import Tkinter as tk
def callback():
print(list(text.get()))
root = tk.Tk()
root.config()
b = tk.Button(root, text="get", width=10, command=callback)
text=tk.StringVar()
entry = tk.Entry(root,textvariable=text)
b.pack(padx=5, pady=5)
entry.pack(padx=5, pady=5)
root.mainloop()
Если вы введете \nu + \lambda + \theta
в поле ввода, консоль (правильно) напечатает:
['\\', 'n', 'u', ' ', '+', ' ', '\\', 'l', 'a', 'm', 'b', 'd', 'a', ' ', '+', ' ', '\\', 't', 'h', 'e', 't', 'a']
Если ваш GUI невозвращая аналогичные результаты (как кажется из вашего поста), тогда я бы порекомендовал заняться исправлением проблемы с графическим интерфейсом, а не копаться с string_escape
и строкой replace
.