如何计算文章并将每个文章放在列表中

时间:2015-03-23 18:53:12

标签: python

我有一个文本文档,它由多个以令牌<分隔的文章组成。新文件>

我想将每篇文章放在一个列表中

所以例如,如果我们有一个txt文件:

  

<新文件> Hello world Hello World<新文件>早起的鸟儿   早鸟

     

我希望List1成为:Hello world Hello World

     

List2:早起鸟早鸟

现在我不知道需要创建多少个列表,所以首先我需要计算令牌<新文件&gt ;.

其次我想将每篇文章放在一个列表中。

这是我的程序

#program 1

textFile = open("docs.txt" , "r")
lines = textFile.read()


count = 0

#count how many articles there are
for line in textFile:
    if line.strip() == '<NEW DOCUMENT>':
        count = count + 1


#place articles in lists





textFile.close()

我的数量为0,我不知道如何开始将它们放入列表中

2 个答案:

答案 0 :(得分:1)

如果令牌出现在一行上,旁边没有其他内容:

newDoc = "<NEW DOCUMENT>"
listOfDocumetns = [[]]
with open('path/to/text/file') as infile:
    for line in infile:
        line = line.strip()
        if line == newDoc:
            listOfDocuments.append([])
            continue
        listOfDocuments[-1].append(line)

如果令牌出现在一行上,旁边有其他文字:

newDoc = "<NEW DOCUMENT>"
listOfDocumetns = [[]]
with open('path/to/text/file') as infile:
    for line in infile:
        line = line.strip()
        if newDoc not in line:
            listOfDocuments[-1].append(line)
            continue
        while line:
           left, _, right = line.partition(newDoc)
           listOfDocuments[-1].append(left)
           listOfDocuments.append([])
           line = right

答案 1 :(得分:1)

假设此文本文档不是很大,并假设您需要一个['Hello world Hello World', 'Early Bird Early Bird']形式的列表:

with open('myfile.txt', 'r') as myfile:
    print([item.strip() for item in myfile.read().split('< NEW DOCUMENT>') if item])

如果您想要[['Hello', 'world', 'Hello', World'], ['Early', 'Bird', 'Early', 'Bird']]形式的嵌套列表:

with open('myfile.txt', 'r') as myfile:
    print([[myitem for myitem in item.strip().split(' ')] for item in myfile.read().split('< NEW DOCUMENT>') if item])