Python 如何跳过循环中的项目

Python 如何跳过循环中的项目,python,loops,pandas,append,Python,Loops,Pandas,Append,我试图创建一个列表,列出所有来自5个不同来源的报纸文章。它们以JSON格式存储。所有文章都存储在不同的文件中,其中包含报纸和年份(time spam 2005-2015)。问题是其中一份报纸只在2014-15年发行,因此当我将所有内容循环在一起时,我会发现错误。这是我的尝试: import json import nltk import re import pandas appended_data = [] for i in range(2005,2016): df0 = panda

我试图创建一个列表,列出所有来自5个不同来源的报纸文章。它们以
JSON
格式存储。所有文章都存储在不同的文件中,其中包含报纸和年份(time spam 2005-2015)。问题是其中一份报纸只在2014-15年发行,因此当我将所有内容循环在一起时,我会发现错误。这是我的尝试:

import json
import nltk
import re
import pandas

appended_data = []

for i in range(2005,2016):
    df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
    df1 = pandas.DataFrame([json.loads(l) for l in open('Scot_%d.json' % i)])
    df2 = pandas.DataFrame([json.loads(l) for l in open('APJ_%d.json' % i)])
    df3 = pandas.DataFrame([json.loads(l) for l in open('TH500_%d.json' % i)])
    df4 = pandas.DataFrame([json.loads(l) for l in open('DRSM_%d.json' % i)])
    appended_data.append(df0)
    appended_data.append(df1)
    appended_data.append(df2)
    appended_data.append(df3)
    appended_data.append(df4)


appended_data = pandas.concat(appended_data)

doc_set = appended_data.body

我的问题是,;该代码是否符合我的目标?(创建一个单一列表,其中包含一段时间内每家报纸的所有文章的
正文
);还有,我怎样才能让我的第一份报纸(SDM)跳过2005-2013年的计划呢?

对于跳过的部分,您可以:

for i in range(2005,2016):
    if i > 2013:
        df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
        appended_data.append(df0)
    df1 = pandas.DataFrame([json.loads(l) for l in open('Scot_%d.json' % i)])

要知道代码是否按预期执行,我们需要这么多示例数据。

首先,您需要检查python的版本,以确定在未找到文件名时抛出的错误类型,如中所述

其次,为了防止某些文件出现问题,您应该检查所有的可能性

一种方法是

  • 创建文件名前缀列表['SDM','Scot','AP','TH500','DRSM')

  • 年复一年

  • 在名称列表中将文件名创建为循环

  • try:
    except
    对中打开文件为了作为myfile处理任何问题,您也可以在if中使用
    os.path.exists()
    来避免try-except。但是,无论如何,您应该有一个try-except对,以防出现其他错误

  • 将数据读入
    df=pandas.DataFrame([json.loads(myfile))
    注意,您还应该将其封装为
    try…除了

  • 关闭文件以避免打开太多文件

  • 现在将df附加到您正在创建的列表中


  • 这应该可以解决这种情况。

    在没有任何数据的情况下很难回答第一个问题,但对于第二个问题,您可以测试该文件是否存在。注意,您应该检查读取的文件是否有效,以及其他文件是否存在,以防万一。您应该关闭文件以避免一次打开过多的文件。即使这样做有效,也最好使用为将来的程序养成良好的习惯。不客气。注释中的
    os.path.exists()
    建议也要记住,在一般情况下,您事先不知道哪些文件可能存在,哪些文件可能不存在。