【问题标题】:How do you read a text file and only print certain lines listed together?您如何阅读文本文件并仅打印一起列出的某些行?
【发布时间】:2020-07-12 05:51:17
【问题描述】:

任务是处理一个包含文章引用的所有信息的文本文件。我只想提取作者、文章标题和出版物;没有别的。

我想打印成这样的格式:

“作者姓名”、“文章标题”、“出版物” (AU、TI 和 IP 是每行前面的缩写,分别列出作者、标题和出版物)

到目前为止,我有这个代码:

f = open("file.txt", "rt")
contents = f.readlines()

for line in contents:
    if "AU" in line: 
        print(line)

for line in contents:
    if "TI" in line: 
        print(line)

for line in contents:
    if "IP" in line: 
       print(line)

此代码仅输出整个作者列表,然后是整个文章标题列表,然后是整个出版物列表。

但我需要它来输出:作者、标题、出版物

如何调整此代码以以该格式打印?

【问题讨论】:

  • 你的文件file.txt怎么样?
  • 文本文件如下所示。 DP - 2020 年 3 月 23 日 TI - 意大利与 COVID-19 相关的病死率和患者特征。 LID - 10.1001/jama.2020.4683 [doi] FAU - Onder, Graziano AU - Onder G AD - 心血管、内分泌代谢疾病和衰老系,意大利罗马高等卫生研究院。 FAU - Rezza, Giovanni AU - Rezza G AD - 意大利罗马卫生研究所传染病系。 FAU - Brusaferro, Silvio AU - Brusaferro S AD - 总统办公室,Istituto Superiore di Sanita,意大利罗马。

标签: python string format


【解决方案1】:

如果它们通常是连续的行,你应该这样做:

for line in contents:
    if "IP" in line:
        print(line)
    else if "TI" in line:
        print(line)
    else if "AU" in line:
        print(line)

注意:这会将每个内容打印在不同的行中。也许您应该考虑将所有内容排序到一个看起来像这样的字典中:dict = { "authors": [], "titles": [], "publications": [] },然后按如下顺序打印它们:

for i in len(dict['authors']):
    print(dict['authors'][i] + ", " + dict['titles'][i] + ", " dict['publications'][i])

这都是考虑到你的数据是连续排序的。

【讨论】:

    猜你喜欢
    • 2013-02-12
    • 2011-09-26
    • 2021-02-17
    • 2017-08-19
    • 1970-01-01
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多