首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拆分直线和线条

拆分直线和线条
EN

Stack Overflow用户
提问于 2013-04-05 09:54:14
回答 3查看 77关注 0票数 0

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

该文件如下所示:

代码语言:javascript
复制
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()

代码语言:javascript
复制
 while line !='':
    district = str.split(line)
    line = f.readline()
    a.append(district)
print(a)

这是我为后半段做的代码:

代码语言:javascript
复制
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]等。

EN

回答 3

Stack Overflow用户

发布于 2013-04-05 09:57:44

这应该能帮你解决这个问题-

代码语言:javascript
复制
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']]}
票数 0
EN

Stack Overflow用户

发布于 2013-04-05 10:00:46

这就是我为你编写的代码。希望它能起作用

代码语言:javascript
复制
FileStream f = new Filestream(path,FileMode.Open);
StreamReader sf = new StreamReader(f);

这里

代码语言:javascript
复制
while !sf.EndOfStream:
    district = str.split(' ')
    line = f.readline()
    a.append(district)
print(a)

你在str.split(' ')失败了;

票数 0
EN

Stack Overflow用户

发布于 2013-04-05 10:05:43

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
[[['NDP', 'LIBERAL', 'GREEN', 'CPC'], ['NDP', 'GREEN', 'LIBERAL', 'CPC'], ['CPC', 'LIBERAL', 'GREEN', 'NDP'], ['NDP', 'GREEN', 'LIBERAL', 'CPC']]]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15824666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档