分裂线和线

时间:2013-04-05 01:54:14

标签: python file list

所以,我想知道如何分割文件的行并将它们放入列表中?我测试了一个适用于列表的一个段但不适用于其他块的代码:

该文件如下:

Rank Ballots

Riding 0

NDP LIBERAL GREEN CPC

NDP GREEN LIBERAL CPC

CPC LIBERAL GREEN NDP

NDP GREEN LIBERAL CPC


Riding 1

NDP LIBERAL GREEN CPC

LIBERAL GREEN NDP CPC

NDP GREEN LIBERAL CPC

LIBERAL GREEN NDP CPC

NDP GREEN LIBERAL CPC

等等。

这是上半场的代码,骑0:     line = f.readline()

 while line !='':
    district = str.split(line)
    line = f.readline()
    a.append(district)
print(a)

这是我下半场的代码:

header = f.readline().rstrip() 
riding = f.readline().rstrip()
riding = f.readline().rstrip()
votes = []

while riding !='':
    rank = str.split(riding)
    votes = []
    while rank != '':
        votes.append(rank)
        rank = str.split(riding)
        riding = f.readline().rstrip()

    print(votes)
    riding = f.readline().rstrip()

当我打印它时,它只是一个空白区域。我想知道是否有人可以提供帮助。输出应该是每次骑行的列表。因此,对于骑行0:它是[[第1行],[第2行]等]和骑乘1:[[第1行],[第2行]等等。

3 个答案:

答案 0 :(得分:0)

这应该为你解决 -

import re

f = open('x.txt')
d = [l.strip() for l in f.readlines() if l.strip()]

groups   = {}
curr_key = ''
for line in d:
    if re.search('Riding [0-9]+', line):
        curr_key = line
        groups[curr_key] = []
    elif curr_key:
        groups[curr_key].append([line])

print groups

>>> {'Riding 1': [['NDP LIBERAL GREEN CPC'], ['LIBERAL GREEN NDP CPC'], ['NDP GREEN LIBERAL CPC'], ['LIBERAL GREEN NDP CPC'], ['NDP GREEN LIBERAL CPC']], 'Riding 0': [['NDP LIBERAL GREEN CPC'], ['NDP GREEN LIBERAL CPC'], ['CPC LIBERAL GREEN NDP'], ['NDP GREEN LIBERAL CPC']]}

答案 1 :(得分:0)

这就是我的代码。希望它能运作

FileStream f = new Filestream(path,FileMode.Open);
StreamReader sf = new StreamReader(f);

下面

while !sf.EndOfStream:
    district = str.split(' ')
    line = f.readline()
    a.append(district)
print(a)

你在str.split(' ');

失败了

答案 2 :(得分:0)

lines = [L.strip() for L in f if L.strip()][1:]

data = []
group = []

for L in lines:
    if L.startswith('Riding'):
        if group:
            data.append(group)
        group = []
        continue
    group.append(L.split())

print(data)

输出:

[[['NDP', 'LIBERAL', 'GREEN', 'CPC'], ['NDP', 'GREEN', 'LIBERAL', 'CPC'], ['CPC', 'LIBERAL', 'GREEN', 'NDP'], ['NDP', 'GREEN', 'LIBERAL', 'CPC']]]
相关问题