Python 如何跳过循环中的项目
我试图创建一个列表,列出所有来自5个不同来源的报纸文章。它们以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
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的版本,以确定在未找到文件名时抛出的错误类型,如中所述 其次,为了防止某些文件出现问题,您应该检查所有的可能性 一种方法是
try:
except
对中打开文件为了作为myfile处理任何问题,您也可以在if中使用os.path.exists()
来避免try-except。但是,无论如何,您应该有一个try-except对,以防出现其他错误df=pandas.DataFrame([json.loads(myfile))
注意,您还应该将其封装为try…除了对
这应该可以解决这种情况。在没有任何数据的情况下很难回答第一个问题,但对于第二个问题,您可以测试该文件是否存在。注意,您应该检查读取的文件是否有效,以及其他文件是否存在,以防万一。您应该关闭文件以避免一次打开过多的文件。即使这样做有效,也最好使用为将来的程序养成良好的习惯。不客气。注释中的
os.path.exists()
建议也要记住,在一般情况下,您事先不知道哪些文件可能存在,哪些文件可能不存在。