Замена определенного текста внутри String / Sentence на float с использованием Python - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть строка SQL из файла, похожая на эту:

   SELECT a.codeid, a.name, a.order, a.cost, a.nodays
   FROM Table a
   Where a.codeid = 'old_id'
   and a.name = 'myname'
   and a.nodays = 'count_days'

Здесь «old_id», «myname» и «count_days» - это макеты, которые мне нужно изменить при выполнении запроса sql к реальномузначения, такие как 'abcd' для идентификатора 'Bishop' для имени и 5 (скажем) для nodays.

Я определил функцию python для преобразования SQL-запроса в файле в настоящий SQL-файл, который я хочу вот так (и после этого будет использовать pyodbc для извлечения данных)

    import re 
    def dummyTorealQuery(file, idval, nameval, daysval):
      daysval_st = str(daysval)
      mydict = {'old_id': idval,'myname': nameval,'count_days':daysval_st}
      fr = open(file, 'r')
      real_query = fr.read()
      fr.close()

      for key, value in mydict.items():
          real_query = re.sub(key,value, real_query)


    myquery = dummyTorealQuery(myfile 'abcd', 'Bishop', 5)

Однако, когда я получаю вывод, он выглядит так:

   SELECT a.codeid, a.name, a.order, a.cost, a.nodays
   FROM Table a
   Where a.codeid = 'abcd'
   and a.name = 'Bishop'
   and a.nodays = '5'

Проблема в том, что я не хочу, чтобы последнийстрока как таковая с 5, заключенными в строку, я хочу, чтобы она была

   SELECT a.codeid, a.name, a.order, a.cost, a.nodays
   FROM Table a
   Where a.codeid = 'abcd'
   and a.name = 'Bishop'
   and a.nodays = 5

Как мне этого добиться?

Я знаю, что сообщение довольно длинное, но я чувствовал, что должен провести полное обсуждение, если это поможет.

Таким образом, чтобы выразить это компактно, мне нужно заменить определенный текст внутри строки на число с плавающей точкой, например :

* 'Привет, мир, я собираюсь в отпуск на * somenumber * дней ** *

Так что нужно заменить текст 'somenumber' в приведенном выше слове30 дней, чтобы выглядеть (используя регулярное выражение или замену Python или что-то еще)

* «Привет, мир, я собираюсь в отпуск на 30 дней» *

Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Если вы хотите преобразовать строку, представляющую число с плавающей точкой, в фактическое значение с плавающей точкой, используйте метод с плавающей точкой Python:

s = '30.0'
f = float(s)

Переменная f теперь является плавающей точкой.

0 голосов
/ 29 декабря 2018

Попробуйте использовать приведенный ниже код, просто сделать целое число без кавычек просто, просто замените ' ' тоже:

def dummyTorealQuery(file, idval, nameval, daysval):
    fr = open(file, 'r')
    real_query = fr.read()
    fr.close()
    return real_query.replace({'old_id': idval,'myname': nameval,"'count_days'":daysval})

myquery = dummyTorealQuery(myfile, 'abcd', 'Bishop', 5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...