Найти - Пользователи
Полная версия: Несовместимость типов в подстановке
Начало » Python для новичков » Несовместимость типов в подстановке
1
Serbis
elif i == 10:
	if str(toUtf8(it.text())) == '':
	  lit.append('NULL')
	else:
	  print str(toUtf8(it.text()))
	  print type(str(toUtf8(it.text())))
	  lit.append('%s') % (str(toUtf8(it.text())))
В случае выполнения условия все проходит ровно, в случае невыполнения полаю несовместимость типов в подстановке %s. Где косяк?

Вывод:

1.000
<type ‘str’>
Traceback (most recent call last):
File “/home/serbis/Prog/python/b3/sources/createa/head.py”, line 84, in slot_save
tb.loadData()
File “/home/serbis/Prog/python/b3/sources/createa/table.py”, line 89, in loadData
lit.append('%s') % (str(toUtf8(it.text())))
TypeError: unsupported operand type(s) for %: ‘NoneType’ and ‘str’
fata1ex
Используйте str.format, проверяйте на is None, читайте документацию.

>>> m.append('%s' % (s,))
>>> m.append('%s') % (s,)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
Serbis
fata1ex
Используйте str.format, проверяйте на is None, читайте документацию.

>>> m.append('%s' % (s,))
>>> m.append('%s') % (s,)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
Спасибо, дело действительно было в скобках
fata1ex
Serbis, дело не в скобках, а в том, что вы не понимаете, что происходит, когда вы пишете конструкции языка. Это лечится чтением хорошего учебника. А еще очень полезно не писать сразу на форум, а попробовать разобраться самому.
FishHook
Serbis
if str(toUtf8(it.text())) == '':
а что возвращает it.text?
buddha
fata1ex
Serbis, дело не в скобках, а в том, что вы не понимаете, что происходит, когда вы пишете конструкции языка. Это лечится чтением хорошего учебника. А еще очень полезно не писать сразу на форум, а попробовать разобраться самому.

Такое ощущение, что кто-то в школе и институте был “забитым ботаником”!
fata1ex
buddha, странные у вас ощущения. Я стараюсь советовать то, что по моему мнению может помочь в дальнейшем обучении и развитии. Если вы не согласны с чем-то из того, что написано выше, я, разумеется, готов вас выслушать, но переход на личности, тем более таким способом, ничего кроме грустного недоумения не вызывает.
dimy44
Если разложить по полочкам, то смотрите, что получилось:
lit.append('%s') % (str (toUtf8(it.text())))
инструкция lit.append('%s') успешно добавляет в список lit строку ‘%s’, буквально!, естественно метод append возвращает None, т.е. ситуация аналогична None % (str (toUtf8(it.text()))), где % это не тот оператор, что вы ожидали, а другой (остаток от деления).
py.user.next
buddha
fata1ex
Serbis, дело не в скобках, а в том, что вы не понимаете, что происходит, когда вы пишете конструкции языка. Это лечится чтением хорошего учебника. А еще очень полезно не писать сразу на форум, а попробовать разобраться самому.
Такое ощущение, что кто-то в школе и институте был “забитым ботаником”!

это не ботаничность, а просто реакция на синтаксическую ошибку, которая допущена совсем не из-за невнимательности или залипания/недолипания клавиши
Serbis
lit.append('%s') % (str(toUtf8(it.text())))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB