gpt4 book ai didi

python - 在输入文件中查找确切的字符串

转载 作者:行者123 更新时间:2023-12-01 03:39:53 25 4
gpt4 key购买 nike

我正在输入文件中查找以“ND”开头的行。看起来像这样:

ND 195 4.53434033e+006 5.62453069e+006 2.56369141e+002
ND 196 4.53436645e+006 5.62443565e+006 2.56452118e+002
NS 129 113 97 82 58 59 37 22 17 18
NS 5 6 12 26 42 64 62 85 102 117

我写了这样的代码:

from __future__ import print_function

found_ND = False
text = "ND"
with open('input.txt', 'r') as f, open('output.dat', 'w') as outfile:
for line in f:
if text in line:
found_ND = True
if found_ND:
#do whatever you want
try:
line = line.strip()
columns = line.split()
i = float(columns[1])
x = float(columns[2])
y = float(columns[3])
z = float(columns[4])
print(z)
print("{:.2f}".format(z), file=outfile)
except ValueError:
pass

但在结果中我还得到了以“NS”开头的字符串的第四列。结果如下所示:

256.37
256.45
82.00
26.00

如何编写代码以避免出现以 "NS" 开头的行?

最佳答案

好吧,您使用的是found_ND标志,如果找到该行(第一行发生这种情况),则将其设置为True,然后永远不要将其更改回错误:

if text in line:
found_ND = True

对于所有后续迭代,found_ND 将为 True。简而言之,只是不要使用标志,你不需要它:

for line in f:
if text in line:
#do whatever you want
try:
line = line.strip()
columns = line.split()
# .. and so on.

或者,如果您严格想要检查开头(即该行在其他地方可能包含 'ND'),请按照 @Wiktor 的建议使用 startswith :

for line in f:
if line.startswith('ND '):
# ...

关于python - 在输入文件中查找确切的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com