Найти - Пользователи
Полная версия: Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)
Начало » Python для новичков » Непонятная проблема при конкатенации строк (cannot concatenate 'str' and 'long' objects)
1
Vort
Доброго времени суток.
Столкнулся с непонятной проблемой, честно говоря все вменяемые идеи на предмет “почему так” закончились, был бы благодарен за возможную подсказку.

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?
Заранее спасибо.
FishHook
www.django.com/topic/2133324e
Vort
Спасибо, переписал генерацию строки через форматирование и все заработало.
Собственно я потому и написал в ветку “для новичков”.
Но все равно мне не совсем ясно, откуда взялся long?
FishHook
Vort
Но все равно мне не совсем ясно, откуда взялся long?
for x in [server_kod, route_num, ticket_date, from_point_kod, to_point_kod, _uid, as_uid]:
    print x, type(x)
py.user.next
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
)
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