1

我正在编写一个巨大的代码,我需要它做的一件小事就是检查一个分为不同行的文本文件。每次该行为空时,我都需要它来创建一个新的行列表。例如,如果文本是:(每个数字都是一个新行)

1 2 3 4

5 6 3

1 2

它应该构建 3 个不同的列表:[1,2,3,4],[5,6,3],[1,2]

这是我到目前为止的代码(刚刚开始):

    new_list=[]
    my_list=[]
    doc=open(filename, "r")
    for line in doc:
            line=line.rstrip()
            if line !="":
                    new_list.append(line)
    return new_list
4

2 回答 2

3

好的,现在应该可以工作了:

initial_list, temp_list = [], []
for line in open(filename):
    if line.strip() == '':
        initial_list.append(temp_list)
        temp_list = []
    else: temp_list.append(line.strip())
if len(temp_list) > 0: initial_list.append(temp_list)
final_list = [item for item in initial_list if len(item) > 0]
print final_list
于 2012-12-19T19:15:05.997 回答
2

您可以执行以下操作:

[x.split() for x in fileobject if x.strip()]

要获取整数,您可以使用map

[map(int,x.split()) for x in fileobject if x.strip()]

fileobject返回的对象在哪里open。这可能最好在上下文管理器中执行:

with open(filename) as fileobject:
     data_list = [map(int,x.split()) for x in fileobject if x.strip()]

阅读其他帖子的一些评论,似乎我也没有正确理解您的问题。这是我纠正它的努力:

with open(filename) as fileobject:
    current = []
    result = [current]
    for line in fileobject:
        if line.strip(): #Non-blank line -- Extend current working list.
            current.extend(map(int,line.split()))
        else:  #blank line -- Start new list to work with
            current = []
            result.append(current)

现在您的结果列表应该包含在result.

于 2012-12-19T19:14:57.253 回答