所以,我想知道如何分割文件的行并将它们放入列表中?我测试了一个适用于列表的一个段但不适用于其他块的代码:
该文件如下:
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行]等等。
答案 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']]]