这是我的代码:
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")
Run Code Online (Sandbox Code Playgroud)
我想将b变量放在我现在所拥有的位置'%b',所以它就像其他两个数字一样,但没有硬编码.谁知道怎么做?我还在学习Python.
if str(b) in line and "4.871899" in line and "1.995131" in line:
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在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")
Run Code Online (Sandbox Code Playgroud)
要么
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")
Run Code Online (Sandbox Code Playgroud)
要么
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")
Run Code Online (Sandbox Code Playgroud)
需要注意的另一件事是:将浮点数转换为字符串并不总是为您提供与首先创建浮点数相同的文字值.
>>> b = 1.9999999999999999
>>> s ="1.9999999999999999"
>>> str(b) in s
False
>>> str(b) in "abc2.0def"
True
>>> str(b)
'2.0'
Run Code Online (Sandbox Code Playgroud)
这是因为str它旨在返回一个可读的字符串,不一定能完美地代表对象的数据.对于浮点数,这意味着str()可能会舍入到比最初指定的小数位数更少的位数.因此,如果您在文件中搜索精确的数字序列,那么首先创建b一个字符串可能是有意义的,因此不会损失精度.
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |