-4

我给出了一个格式如下的文本文件:

3     Bham    Hoover - Vestiva 
123 234 1 456 876 1 876 745 1
0
4     Bham    Vestiva - Greensprings
235 876 1 647 987 1 098 765 1 234 546 1
0

这持续了几行,但我正在尝试将此格式转换为以下格式:

Event
Disconnect branch from bus 123 to 234 circuit 1
Disconnect branch from bus 456 to 876 circuit 1
Disconnect branch from bus 876 to 745 circuit 1
end
Event 
Disconnect branch from bus 235 to 876 circuit 1
Disconnect branch from bus 647 to 987 circuit 1
Disconnect branch from bus 098 to 765 circuit 1
Disconnect branch from bus 234 to 546 circuit 1
end
4

3 回答 3

1
from itertools import islice
with open('file.txt', 'r') as f:
    # iterate over every 3rd line, starting with the 2nd
    for line in islice(f, 1, None, 3):
        parts = line.split()
        print 'Event'
        # iterate over 3-element chunks
        for x in zip(*(iter(parts),) * 3):
            print 'Disconnect branch from bus %s to %s circuit %s' % x
        print 'end'

输出:

Event
Disconnect branch from bus 123 to 234 circuit 1
Disconnect branch from bus 456 to 876 circuit 1
Disconnect branch from bus 876 to 745 circuit 1
end
Event
Disconnect branch from bus 235 to 876 circuit 1
Disconnect branch from bus 647 to 987 circuit 1
Disconnect branch from bus 098 to 765 circuit 1
Disconnect branch from bus 234 to 546 circuit 1
end

分块代码的功劳转到列表切片上的迭代

于 2012-06-01T23:25:24.803 回答
0
with open("data.txt") as inf:
    for head,data,tail in zip(inf,inf,inf):
        print("Event")
        items = iter(data.split())
        for bus1,bus2,cct in zip(items,items,items):
            print("Disconnect branch from bus {} to {} circuit {}".format(bus1,bus2,cct))
        print("end")

结果是

Event
Disconnect branch from bus 123 to 234 circuit 1
Disconnect branch from bus 456 to 876 circuit 1
Disconnect branch from bus 876 to 745 circuit 1
end
Event
Disconnect branch from bus 235 to 876 circuit 1
Disconnect branch from bus 647 to 987 circuit 1
Disconnect branch from bus 098 to 765 circuit 1
Disconnect branch from bus 234 to 546 circuit 1
end
于 2012-06-01T23:22:29.170 回答
-1

我不确定你的真正需要。但是如果你想像你展示的那样输出你的文件,你可以在你的文本上插入一个分隔符,然后使用 re 模块解析并按照你需要的顺序获取数据!

于 2012-06-01T23:17:00.407 回答