使用Python将字符串/句子中的特定文本替换为浮点

使用Python将字符串/句子中的特定文本替换为浮点,python,regex,string,pandas,replace,Python,Regex,String,Pandas,Replace,我有一个来自如下文件的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'表示n

我有一个来自如下文件的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'表示name,5(比如)表示nodays

我已经定义了一个python函数来将文件中的sql查询转换成我想要的真实sql(之后将使用pyodbc来提取数据)

但是,当我得到输出时,它看起来像:

   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”替换为30天(使用python正则表达式或replace或其他方法)

*“你好,世界,我要去度假30天”*


谢谢

尝试使用下面的代码,简单地生成不带引号的整数很容易,只需将
也替换掉即可:

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)

如果要将表示浮点的字符串转换为实际浮点,请使用Python的float方法:

s = '30.0'
f = float(s)

变量f现在是一个浮点。

但是替换不能用
float
int
替换
str
。是的,但是他的例子有点不清楚,因为他试图以一种迂回的方式做一些事情。在他的例子中,不需要进行替换。是的,当您直接将字符串替换为float时,string to float有效。我正在尝试替换字符串(句子)中的特定字符串以使其浮动。import re
>>>re.sub('replace_ME','30','Hello world I going for a vacation for replace_ME days')
这将返回一个字符串,其中包含一个数字——看起来您正在尝试传递一个带有int/float的SQL语句以进行比较。请记住,这和U9 Forward的解决方案可能会让您面临SQL注入攻击。我只是教你怎么做这不管用。。输出给我的是“计数天数”,而不是感谢U-9。这个和Jason的解决方案都有效!您是否尝试传递mydict={'old_id':idval,'myname':nameval,'count_days':int(daysval st)}?您还可以导入ast,然后导入mydict={'old_id':idval,'myname':nameval,'count_days':ast.literal_eval(daysval_st))}
s = '30.0'
f = float(s)