Найти - Пользователи
Полная версия: Странное поведение строки с подстановкой
Начало » Python для новичков » Странное поведение строки с подстановкой
1
Scorpikor
Добрый день!
Необходимо получить запрос для базы данных, в строку подставить значения:

 SQL_Q = "INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES ({0}, {1}, {2});".format(M_DATE, M_TIME, A_SMS)
print SQL_Q

на выходе получаем:
);SERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES (2015-03-31 00:00:00, 1900-01-01 14:09:16, ТЕСT CMC ПРОВЕРКА
Что не так - почему последняя скобка с точкой запятой стали замещать первые символы и как исправить?
Спасибо.
terabayt
то что выводит тоже нужно в блок кода вставлять
покажите чему ранвы M_DATA, M_TIME, A_SMS
и нужно больше кода!
Scorpikor
#!/usr/bin/python
#-------------------------------------------------
# -*- coding: utf-8 -*-
# Telnet Client for GSM gate ADDPACK AP-GS1002B
import getpass
import sys
import telnetlib
import os
import string
import argparse
import re
from datetime import datetime, date, time, timedelta
import MySQLdb
from time import gmtime, strftime
Подключаемся телнетом к устройству, считываем построчно в RESPONSE
print RESPONSE
0        2   +777777777777  Tue Mar 31 14:09:16 2015  ТЕСТ СМС ПРОВЕРКА
после этого получаем кортеж:
RESP = RESPONSE.split()
print RESP
['0', '2', '+777777777777', 'Tue', 'Mar', '31', '14:09:16', '2015', '\xd0\xa2\xd0\x95\xd0\xa1\xd0\xa2', '\xd0\xa1\xd0\x9c\xd0\xa1', '\xd0\x9f\xd0\xa0\xd0\x9e\xd0\x92\xd0\x95\xd0\xa0\xd0\x9a\xd0\x90']

D_MON = RESP[4]
D_DIG = RESP[5]
A_TIM = RESP[6]
D_YEA = RESP[7]
A_SMS = RESPONSE[54:]
M_DATE = datetime.strptime(A_DATE, '%d/%b/%Y')
M_TIME = datetime.strptime(A_TIM, '%H:%M:%S')
SQL_Q = "INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES ({0}, {1}, {2});".format(M_DATE, M_TIME, A_SMS)
print SQL_Q
print M_DATE
print M_TIME
print A_SMS
и получаем
);SERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES (2015-03-31 00:00:00, 1900-01-01 14:09:16, ТЕСТ СМС ПРОВЕРКА
2015-03-31 00:00:00
1900-01-01 14:09:16
ТЕСТ СМС ПРОВЕРКА
Простите, если много мусора


terabayt
у меня все норм
>>> from datetime import datetime
>>> RESPONSE = '0        2   +777777777777  Tue Mar 31 14:09:16 2015  ТЕСТ СМС ПРОВЕРКА'
>>> RESP = RESPONSE.split()
>>> D_MON = RESP[4]
>>> D_DIG = RESP[5]
>>> A_TIM = RESP[6]
>>> D_YEA = RESP[7]
>>> A_SMS = RESPONSE[54:]
>>> A_DATE = '{}/{}/{}'.format(D_DIG, D_MON, D_YEA)
>>> M_DATE = datetime.strptime(A_DATE, '%d/%b/%Y')
>>> M_TIME = datetime.strptime(A_TIM, '%H:%M:%S')
>>> SQL_Q = "INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES ({0}, {1}, {2});".format(M_DATE, M_TIME, A_SMS)
>>> print SQL_Q
INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES (2015-03-31 00:00:00, 1900-01-01 14:09:16, ТЕСТ СМС ПРОВЕРКА);
>>> print M_DATE
2015-03-31 00:00:00
>>> print M_TIME
1900-01-01 14:09:16
>>> print A_SMS
ТЕСТ СМС ПРОВЕРКА
A_DATA у вас такоеже?
и попробуйте A_SMS сделать так
A_SMS = RESPONSE[54:].strip()
Scorpikor
Простите, не скопировал A_DATE
>>> A_DATE = D_DIG + "/" + D_MON + "/" + D_YEA

Спасибо огромное! После:
A_SMS = RESPONSE[54:].strip()
строки перестали “коверкаться”
>>> SQL_Q = "INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES ({0}, {1}, {2});".format(M_DATE, M_TIME, A_SMS)
>>> print SQL_Q
INSERT INTO berta_gsm_sms (c_date,c_time,c_smstext) VALUES (2015-03-31 00:00:00, 1900-01-01 14:09:16, ТЕСТ СМС ПРОВЕРКА);
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