leon1000
@leon1000

Почему при выходе добавляется \n?

Я написал код который сортирует слова или цифры.
А при выходе добавляется в любому из слов n\:
карусель, кино\n, машина

Вот код:
from tkinter import *  
from tkinter.ttk import Radiobutton 
from tkinter import scrolledtext


def sortint():
    zxcint = entint.get(1.0, END).split(",")
    zxcint = [int(i) for i in zxcint]
    zxcint.sort()
    entint.delete(1.0, END)
    entint.insert(INSERT,str(zxcint)[1:-1])

def delint():
    entint.delete(1.0, END)

def per123int():
    global entint
    entint = scrolledtext.ScrolledText(root,width=40,height=4)
    entint.grid(column=1,row=0)
    entint.insert(INSERT,'Вводите числа через зяпятую(123,32,54 и т.п). Сотрите меня')
    butsortint = Button(root,text="Сортировка",command=sortint)
    butsortint.grid(column=2,row=0)
    butdelint = Button(root,text="Очистка",command=delint)
    butdelint.grid(column=2,row=1)

def sortword():
    translation = {39: None}
    zxcword = entword.get(1.0, END).split(",")
    zxcword.sort()
    entword.delete(1.0, END)
    entword.insert(INSERT,str(zxcword).translate(translation)[1:-1])

def delword():
    entword.delete(1.0, END)

def per123word():
    global entword
    entword = scrolledtext.ScrolledText(root,width=40,height=4)
    entword.grid(column=1,row=0)
    entword.insert(INSERT,'Вводите слова через зяпятую(машина,карусель,кино и т.п). Сотрите меня')
    butsortword = Button(root,text="Сортировка",command=sortword)
    butsortword.grid(column=2,row=0)
    butdelword = Button(root,text="Очистка",command=delword)
    butdelword.grid(column=2,row=1)

root = Tk()
root.title("GUGU")
root.geometry('600x555')


radbutint = Radiobutton(root,text='Цифры',value=1,command=per123int)
radbutword = Radiobutton(root,text='Слова',value=2,command=per123word)

radbutint.grid(column=0,row=0)
radbutword.grid(column=0,row=1)

root.mainloop()
  • Вопрос задан
  • 165 просмотров
Решения вопроса 2
@galaxy
Подозреваю, что не к любому, а к последнему добавляется. Потому, что в поле вводите с переводом строки в конце.
Дальше этот перевод вас и преследует.
На этапе str(zxcword) он уже закрепляется в виде эскейп-последовательности.
>>> s = "мама,мыла,ламу\n"
>>> print(s)
мама,мыла,ламу

>>> a = s.split(",")
>>> a.sort()
>>> a
['ламу\n', 'мама', 'мыла']


Делайте strip():
zxcword = entword.get(1.0, END).strip().split(",")

и преобразуйте список в строку по-человечески (это на будущее):
",".join(zxcword)
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
\n - обычный управляющий символ, обозначающий новую строку. Текст ведь должен как-то разбиваться на строки.
Добавляется он в самом конце в виджете, не совсем понятно зачем, ну да ладно. Сделайте просто strip() или rstrip()
Ну и удалить пробелы можно было бы

zxcword = entword.get(1.0, END).strip().replace(' ', '').split(",")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы