- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在做一个项目,我想在其中使用 Python 解析文本文件。该文件由一些格式不同的 block 的数据条目组成。有新行时会找到新条目。这是我想要完成的:
这是文件的一个例子:
Header Info
More Header Info
Line1
Line2
Line3
Line4
Line5
Line6
Line7
Line8
Line9
Line10
Line11
Line12
Line13
MoreInfo MoreInfo MoreInfo MoreInfo MoreInfo
MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2
MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3
MoreInfo4 MoreInfo4
FieldName1 0001 0001
FieldName1 0002 0002
FieldName1 0003 0003
FieldName1 0004 0004
FieldName1 0005 0005
FieldName2 0001 0001
FieldName3 0001 0001
FieldName4 0001 0001
FieldName5 0001 0001
FieldName6 0001 0001
MoreInfo MoreInfo MoreInfo MoreInfo MoreInfo
MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2 MoreInfo2
MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3 MoreInfo3
MoreInfo4 MoreInfo4
FieldName1 0001 0001
FieldName1 0002 0002
FieldName1 0003 0003
FieldName1 0004 0004
FieldName1 0005 0005
FieldName2 0001 0001
FieldName3 0001 0001
FieldName4 0001 0001
FieldName5 0001 0001
FieldName6 0001 0001
这是我编写的一些代码。它能够读取第一个 block 并将其附加到列表中:
with open(loc, 'r') as f:
for i in range(16):
f.readline()
data = []
line = f.readline()
if line == "\n":
dataLine = f.readline()
while dataLine != "\n":
data.append(dataLine)
dataLine = f.readline()
#pass data list to function
function_call(data)
# reset data list here?
data = []
我怎样才能使它适用于整个文件?我的假设是使用“with open”,它充当“while not end of file”。在跳过前 16 行后,我尝试添加一个“while True”。我对 Python 的解析能力知之甚少。
在此先感谢您的帮助。
最佳答案
在初始跳过之后添加一个 while True
应该绝对有效。当然,您必须正确了解所有细节。
您可以尝试扩展您已有的方法,在外循环中使用嵌套的while
循环。但将其视为单个循环可能更容易。对于每一行,您可能只需要做三件事:
break
退出循环,确保处理旧的数据
(文件中的最后一个 block )如果有第一个。data
,确保先处理旧的data
(如果有的话)。数据
。所以:
with open(loc, 'r') as f:
for i in range(16):
f.readline()
data = []
while True:
line = f.readline()
if not line:
if data:
function_call(data)
break
if line == "\n":
if data:
function_call(data)
data = []
else:
data.append(line)
有几种方法可以进一步简化:
for line in f:
而不是重复执行 f.readline()
并检查它的 while
循环。<groupby
将行迭代器转换为以空行分隔的行组迭代器。关于python - 解析换行分隔文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447850/
在 Vaadin 7.0,显示时JavaBean Table 中的数据与 BeanContainer ,用新数据刷新表的正确方法是什么? 最佳答案 该表通过监听器监视表项的属性。如果您通过表的 Ite
首先,我使用的是带有 Axis2 1.6.2 的 eclipse,我正在 tomcat 6 上部署我创建的 Web 服务。Web 服务是在 eclipse 中通过自上而下的方法创建的。 我被要求使对我
我已将 Rails 3.1.1 应用程序升级到 Rails 3.1.3,现在,对于每个请求,它仅响应错误数量的参数(3 for 1)。不幸的是,它没有说明错误在哪里,并且应用程序跟踪为空。我认为存在一
我是一名优秀的程序员,十分优秀!