Skip to main content
 首页 » 编程设计

python之更改括号之间的变量

2025年05月04日27birdshome

这是我的代码:

for i, line in enumerate(searchlines): 
    b = 1.860572 
    if "%b" in line and "4.871899" in line and "1.995131" in line: 
        m.write("match" + "\n") 

我想在我现在有 '%b' 的地方有 b 变量,所以它就像其他两个数字一样,但没有硬编码它。有人知道怎么做吗?我还在学习 Python。

请您参考如下方法:

if str(b) in line and "4.871899" in line and "1.995131" in line: 

顺便说一句,在 for 循环中分配一个不会根据被迭代的对象而改变的循环是有点低效的。根据您的用例,这样做可能更有意义:

b = 1.860572 
for i, line in enumerate(searchlines): 
    if str(b) in line and "4.871899" in line and "1.995131" in line: 
        m.write("match" + "\n") 

或者

b = "1.860572" 
for i, line in enumerate(searchlines): 
    if b in line and "4.871899" in line and "1.995131" in line: 
        m.write("match" + "\n") 

或者

b = 1.860572 
b_s = str(b) 
for i, line in enumerate(searchlines): 
    if b_s in line and "4.871899" in line and "1.995131" in line: 
        m.write("match" + "\n") 

还有一件事需要注意:将 float 转换为字符串并不总是为您提供与最初用于创建 float 相同的文字值。

>>> b = 1.9999999999999999 
>>> s ="1.9999999999999999" 
>>> str(b) in s 
False 
>>> str(b) in "abc2.0def" 
True 
>>> str(b) 
'2.0' 

这是因为 str 旨在返回一个可读的字符串,不一定能完美地代表对象的数据。对于 float ,这意味着 str() 可能四舍五入到比您最初指定的小数位数更少的位置。因此,如果您要在文件中搜索精确的数字序列,首先将 b 创建为字符串可能是有意义的,这样就不会损失精度。