gpt4 book ai didi

python - 在使用 dropwhile 函数跳过注释行后读取第一条非注释行时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:55 24 4
gpt4 key购买 nike

我需要读取几个 .dat 文件并从中提取适当的信息。

.dat 文件通常以大约 15-25 行注释开始(行以“#”开头),然后接下来的两行是数字,表示其性质和大小。但是,一旦我尝试阅读第一行非注释行,我的代码似乎就从第二行非注释行开始读取。我似乎无法弄清楚问题是什么:/任何帮助将不胜感激,因为这阻止了我对这些 .dat 文件进行其他更复杂的操作。

这是我有缺陷的代码:

PS:如果有更pythonic的方式,请告诉我:)

#Packages needed
from itertools import dropwhile

# In[]
#defining function to check if line starts with some character, here #
def is_comment(s):
# return true if a line starts with #
return s.startswith('#')

# In[]
file = "foo.dat"

#viewing important info
with open(file, "r") as f:
for line in dropwhile(is_comment, f):

Nat = f.readline()
print("Nature:", Nat)

S = f.readline()
print("Size, S:", S)

break

请在附件中找到有问题的 foo.dat 文件的屏幕截图。 foo.dat或此处的文本版本:https://pastebin.com/C91dpUXK
*编辑:添加文本文件链接

最佳答案

这是预期的

第一次进入循环时,line是第一个非注释行。您通过立即阅读另一行来跳过它。快速修复是使用 :

for line in dropwhile(is_comment, f):           
Nat = line
print("Nature:", Nat)

S = f.readline()
print("Size, S:", S)

一种更像 Python 的方法是手动迭代。

d = dropwhile(is_comment, f)
nat = next(d)
size = next(d)

关于python - 在使用 dropwhile 函数跳过注释行后读取第一条非注释行时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522571/

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