首页 > 解决方案 > 使用 Python 将字符串/句子中的特定文本替换为浮点数

问题描述

我有一个来自文件的 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' 用于 id '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

我怎样才能做到这一点?

我知道这篇文章很长,但如果有帮助,我觉得可以进行完整的讨论。

因此,为了简洁起见,我需要用浮点数替换字符串中的特定文本,例如

* '你好,世界,我要去度假 * 一些 * 天' *

所以需要用 30 天替换上面的文本 'somenumber' 看起来像(使用 python 正则表达式或替换或其他)

* 'Hello world 我要去度假30天' *

谢谢。

标签: pythonregexstringpandasreplace

解决方案


尝试使用下面的代码,简单地制作不带引号的整数很容易,只需替换' '

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)

推荐阅读