Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2014 16:11:28

Vort
Зарегистрирован: 2014-01-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)

Доброго времени суток.
Столкнулся с непонятной проблемой, честно говоря все вменяемые идеи на предмет “почему так” закончились, был бы благодарен за возможную подсказку.

Python 2.7.8, Django 1.6.5

При конкатенации строк:

parameter = """<kod>""" + server_kod + """</kod>
                    <RoundNum>""" + route_num + """</RoundNum>
                    <date>""" + ticket_date + """</date>
                    <FromPoint>""" + from_point_kod + """</FromPoint>
                    <ToPoint>""" + to_point_kod + """</ToPoint>
                    <mode>cancelation</mode>
                    <Ticket>
                      <uid>""" + _uid + """</uid>
                      <AsUID>""" + as_uid + """</AsUID>
                    </Ticket>
                """
Возникает ошибка :
TypeError at /cancel_tickets/
cannot concatenate 'str' and 'long' objects
со ссылкой на строку
<AsUID>""" + as_uid + """</AsUID>

Переменная as_uid, содержит текст типа 47304МП0РЦ4УУА - т.е. кириллические символы и цифры, в модели она представлена как
 asUID = models.CharField(blank=True, max_length=100)

в Local vars
as_uid	'\u04316344840883958866'

Что не так? Каким образом интерпретатор видит там long вместо str?
Заранее спасибо.

Отредактировано Vort (Сен. 18, 2014 16:23:58)

Офлайн

#2 Сен. 18, 2014 16:20:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)

Офлайн

#3 Сен. 18, 2014 16:42:21

Vort
Зарегистрирован: 2014-01-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)

Спасибо, переписал генерацию строки через форматирование и все заработало.
Собственно я потому и написал в ветку “для новичков”.
Но все равно мне не совсем ясно, откуда взялся long?

Офлайн

#4 Сен. 18, 2014 17:05:22

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)

Vort
Но все равно мне не совсем ясно, откуда взялся long?
for x in [server_kod, route_num, ticket_date, from_point_kod, to_point_kod, _uid, as_uid]:
    print x, type(x)



Офлайн

#5 Сен. 18, 2014 22:53:11

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10014
Репутация: +  857  -
Профиль   Отправить e-mail  

Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)

Vort
parameter = """<kod>""" + server_kod + """</kod>
                    <RoundNum>""" + route_num + """</RoundNum>
                    <date>""" + ticket_date + """</date>
                    <FromPoint>""" + from_point_kod + """</FromPoint>
                    <ToPoint>""" + to_point_kod + """</ToPoint>
                    <mode>cancelation</mode>
                    <Ticket>
                      <uid>""" + _uid + """</uid>
                      <AsUID>""" + as_uid + """</AsUID>
                    </Ticket>
                """

paramfmt = """\
<kod>{}</kod>
<RoundNum>{}</RoundNum>
<date>{}</date>
<FromPoint>{}</FromPoint>
<ToPoint>{}</ToPoint>
<mode>cancelation</mode>
<Ticket>
<uid>{}</uid>
<AsUID>{}</AsUID>
</Ticket>
"""
 
parameter = paramfmt.format(
    server_kod,
    route_num,
    ticket_date,
    from_point_kod,
    to_point_kod,
    _uid,
    as_uid
)



Отредактировано py.user.next (Сен. 18, 2014 22:54:08)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version