我正在尝试使用来自5个不同来源的所有报纸文章创建一个列表。它们以JSON
格式存储。所有文章都存储在包含报纸和年份(垃圾邮件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
我的问题是;这段代码是否符合我的目标? (随着时间的推移,创建一份包含每份报纸所有文章的body
的单一列表);并且,我如何以我跳过第一份报纸(SDM)的2005-2013年的方式对其进行编程
答案 0 :(得分:1)
对于跳过部分,您可以:
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)])
要知道代码是否按预期执行,我们需要这样的样本数据。
答案 1 :(得分:1)
首先,您需要检查python的版本,以确定在找不到文件名时引发的错误类型,如Python's "open()" throws different errors for "file not found" - how to handle both exceptions?中所述
其次,如果某些文件出现问题,您应该检查所有可能性。
一种方法是
创建一个文件名前缀列表[' SDM',' Scot',' AP'' TH500', ' DRSM&#39)
循环
在名称列表中将文件名创建为循环
在try:
except
对中打开文件以处理myfile中的任何问题。或者,您也可以在if中使用os.path.exists()
以避免尝试除外。但是,除非出现其他问题,否则你应该尝试除了配对。
将数据读入df = pandas.DataFrame([json.loads(myfile))
请注意,您还应将其封装为try ... except
对
关闭该文件,以便您没有太多打开。
现在将df附加到您正在创建的列表中。
这应该处理这种情况。