我在一个文件中有一些数据,其中很少有名称或字符串标记为下划线,但它们下面没有任何数据,而是有空格/空行,因为下划线下面也有数据行。你知道吗
如何只打印那些带有下划线且后面有数据的名称/字符串?你知道吗
数据文件示例:
toran
—————————————————————————
nscld
—————————————————————————
polkit
—————————————————————————
ganter
—————————————————————————
tcp 0 0 D
tcp 0 0 D
tcp 0 0 D
polkit
—————————————————————————
在上述文件中,我只需要:
ganter
—————————————————————————
tcp 0 0 D
tcp 0 0 D
tcp 0 0 D
尝试下面的代码,但它没有像预期的那样工作,因为它无法获取字符串/名称,只能获取数据。你知道吗
patt_match = False
with open("tran", "r") as lb:
for line in lb:
if '—————————————————————————' in line:
patt_match = False
elif 'tcp' in line:
patt_match = True
line = line.strip()
print(line)
实际输出:
tcp 0 0 D
tcp 0 0 D
tcp 0 0 D
问题是,只有在到达数据行后才确定是否需要打印标题。这意味着您需要保留变量中的最后一个标题,并在数据行第一次出现之前打印它。你知道吗
下面是保留最后一行文本的示例实现。如果文本后面有一行包含
'—————————————————————————'
,它将被标记为标题行,否则它将被视为数据行并打印最后一个标题。你知道吗由于您在评论中提到您的数据源自Windows,因此我添加了一行,从您的行中删除任何尾随的回车。对于没有这些文件的文件,这也可以正常工作:
这将跳过各节之间的换行,但您可以包含以下内容:
下面是一个IDEOne Link,用@Flaming\u Dorito的例子演示代码。你知道吗
相关问题 更多 >
编程相关推荐