在Python中读取结构化文本文件

2024-10-04 11:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的文本文件:

1. AUTHOR1

(blank line, with a carriage return)

Citation1

2. AUTHOR2

(blank line, with a carriage return)

Citation2

(...)

也就是说,在这个文件中,有些行以一个整数开头,后跟一个点、一个空格和一个表示作者姓名的文本;这些行后面是一个空行(包括回车符),然后是以字母字符开头的一行文本(文章或书籍引文)。在

我想把这个文件读入一个Python列表,加入作者的名字和引文,这样每个列表元素的形式都是:

['AUTHOR1 Citation1', 'AUTHOR2 Citation2', '...']

这看起来像是一个简单的编程问题,但我找不出解决方案。我的尝试如下:

^{pr2}$

但是文章列表将作者和引文作为单独的元素存储!在

提前感谢您在解决这个棘手的问题上的任何帮助。。。:-(


Tags: 文件文本元素列表returnwithline文章
3条回答

问题是,在每一个循环迭代中,你只能得到一个,作者引文,而不是两者都有。所以,当你做附加时,你只有一个元素。在

解决这个问题的一种方法是在每次循环迭代中读取这两个值。在

假设您的输入文件结构:

"""
1. AUTHOR1

Citation1
2. AUTHOR2

Citation2
"""

不会更改,我将使用readlines()和切片:

^{pr2}$

这应该是有效的:

articles = []
with open("sample.txt") as infile:
    for raw_line in infile:
        line = raw_line.strip()
        if not line:
            continue
        if line[0].isdigit():
            author = line.split(None, 1)[-1]
        else:
            articles.append('{} {}'.format(author, line))

相关问题 更多 >