Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно [RSS Feed]

#1 Июль 26, 2022 12:55:19

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

Может быть проблема вообще в get когда я получаю данные из поля Text и сохраняю в базу?

    neispr = e7.get('1.0','end')
    length = len(str(neispr))
    neispr = str(neispr)[0:length-2]

Отредактировано m1r42 (Июль 26, 2022 12:56:58)

Офлайн

#2 Июль 26, 2022 12:58:45

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

FishHook
ну, разумеется, тип будет str, потому что вы предыдущей строкой значение кастанули к str. Проверьте типы до всяческих преобразований
Но ведь не работает даже когда тип str во втором print

Отредактировано m1r42 (Июль 26, 2022 13:00:22)

Офлайн

#3 Июль 26, 2022 13:04:05

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

cursor.fetchall() fetches all the rows of a query result. It returns all the rows as a list of tuples. An empty list is returned if there is no record to fetch.

cursor.fetchall() результатом являются все строки отвечающие критерию запроса. Результат возвращается в виде СПИСКА КОРТЕЖЕЙ. Если данные отсутствуют - возвращается пустой СПИСОК

НЕЛЬЗЯ взять список кортежей, сказать ему - ну кароче ты строка и получить валидные данные.
По ссылке что я вам дал детально показано в каком виде и какого типа приходят данные.

Вы же хотите

 answer = str([(),(),()])
А потом удивляетесь что вылазят какие-то косяки.
Это вы еще не работали с нормальными данными и выборками
Так что гуглим как список кортежей преобразовать в строку



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#4 Июль 26, 2022 14:03:51

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

ZerG
Вы же хотите

answer = str()
А потом удивляетесь что вылазят какие-то косяки.
Это вы еще не работали с нормальными данными и выборками
Так что гуглим как список кортежей преобразовать в строку

Да, я бы хотел преобразовать этот ответ в строку, потому, что я не вижу здесь СПИСКА КОРТЕЖЕЙ

[{'neispr': ‘ТЕКСТ\nТЕКСТ\nТЕКСТ’}[

да, тип действительно list, но больше похоже на словарь dict и самое забавное, что str то работает, а вот все остальные попытки преобразовать ЭТО в строку провалились


Отредактировано m1r42 (Июль 26, 2022 14:08:33)

Офлайн

#5 Июль 26, 2022 15:00:45

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

Кстати еще одно забавное поведение Python. При запросе из базы и получении пустого значения тип данных КОРТЕЖ, а если значение не пустое, то тип данных ЛИСТ, что это за чудеса?

succesfully connected…3
1
succesfully connected…1
1128
() <class ‘tuple’>
<class ‘str’>
<class ‘str’>

succesfully connected…6
succesfully connected…1
1127
<class ‘list’>
<class ‘str’>
<class ‘str’>

Офлайн

#6 Июль 26, 2022 15:32:56

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

ZerG
НЕЛЬЗЯ взять список кортежей, сказать ему - ну кароче ты строка и получить валидные данные.
Почему нельзя? Как раз когда я говорю - “ты строка”, вот этой конструкции - “[{все что угодно}[”
 answer = str([{все что угодно}])
действительно это становится строкой, но в этой строке вместо символов \n почему-то \\n, все остальное в норме

Отредактировано m1r42 (Июль 26, 2022 15:33:29)

Офлайн

#7 Июль 26, 2022 22:42:12

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1372
Репутация: +  122  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

m1r42
но в этой строке вместо символов \n почему-то \\n
так задумано, чтобы было видно перенос строки как знак, а не как перенос строки в действительности.
m1r42
Почему нельзя? Как раз когда я говорю - “ты строка”, вот этой конструкции - “[{все что угодно}[”
Вопрос вам, почему вы не сделаете так
  
answer2 = [{'neispr': 'Специально проверяю. Как это работает.\nСледующая строка.\nТретья строка.'}]
text = answer2[0]['neispr']
print(text)

Офлайн

#8 Июль 27, 2022 09:17:31

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

xam1816
Вопрос вам, почему вы не сделаете так

Спасибо за ваш ответ. Наконец-то докопался до истины. Пытался делать так, но так как была еще одна ошибка в программе, точнее даже не ошибка, а недоработка, то эта схема не работала.
У меня был запрос к базе с возвратом пустого значения при запуске программы, поэтому тип у answer2 был None <class ‘NoneType’> . По этой причине конструкция ни как не хотела работать.

Офлайн

#9 Июль 27, 2022 09:20:08

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

Всех участников дискуссии благодарю за помощь. Я бы и сам разобрался со временем, но общение на форуме очень ускоряет обучение и работу. Надо будет подтянуть знания по типам данных в Python.

Офлайн

#10 Июль 27, 2022 09:49:02

m1r42
Зарегистрирован: 2022-07-26
Сообщения: 133
Репутация: +  7  -
Профиль   Отправить e-mail  

Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно

Остался один вопрос у меня. Почему все работает, но при этом тип ответа list?

 sql8="SELECT `neispr` FROM `kvt` WHERE `nom` = '"+nom+"';"
 cursor.execute(sql8)
 answer2 = cursor.fetchall()
 print(answer2,type(answer2))
 neispr = answer2[0]['neispr']

При этом всем print выдает тип list:
 [{'neispr': 'Теперь все работает как надо.\nВот это правильно!'}] <class 'list'>
Разве тип list не должен выглядеть как-то так ?
 [(),(),()]
Откуда взялись фигурные скобки в ответе?

Офлайн

  • Начало
  • » Python для новичков
  • » Вывод текста с символом перенос строки "\n" из базы MySQL в поле Text не хочет работать правильно[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version