Python逐行阅读合并行?

时间:2017-11-02 10:18:37

标签: python json filereader

我有一个文件,我在每行上写了json.dumps(tweet)(大约300000行)。写行的代码是:

for tweet in collection:
    outputfile.write(json.dumps(tweet)+"\n")
    written_tweets += 1

该文件看起来很棒,正是我需要的:

一个样本行看起来像(所有外观相同 - 检查过的事实):

{"url": "http://youtu.be/F4pkpyRFLgA?a", "text": "I liked a @YouTube video Spoopy foxy Halloween", "screen_name": "placiboeffect", "id": 9255295       90155661313, "time": "Wed Nov 01 01:07:04 +0000 2017"}

然后在另一个python脚本中我试图使用这个文件,逐个读取行并清理它们(不重要)。我这样做:

      lines = open(self.input_file, 'r').read().splitlines()
      content = []
      faulty_lines = 0
      for line in lines:
          line = line.replace('\\"', '\\\"')
          try:
             content.append(json.loads(line))
          except Exception as e:
              faulty_lines += 1
              print (line)
              raise e

每个文件的某些行(大约1000-2000)的json.loads失败,在分析行时,我得到一个奇怪的行,我的文件中存在2行的组合,例如:

{"url": "http://youtu.be/mI7XX{"url": "http://youtu.be/fLU8eksPyyE?a", "text": "I liked a @YouTube video WHERE WILL BLEDSOE BE TRADED? 7 POSSIBLE TRADES!", "screen_name": "WTS2323", "id": 925529722926370816, "time": "Wed Nov 01 01:07:36 +0000 2017"}

有点奇怪地合并2行,当然json.loads失败了。我能够在我的文件中找到这个组合推文的部分内容。

注意:我尝试了多种阅读策略:

with open(self.input_file) as f:
     for line in f:
         /*do whatever*/

lines = open(self.input_file).readlines()
lines = [x.strip() for x in lines]

和其他人。我总是得到这个奇怪的组合推文。有人可以帮我找出为什么会这样吗??

更新:合并的行是:

{"url": "http://youtu.be/fLU8eksPyyE?a", "text": "I liked a @YouTube video  WHERE WILL BLEDSOE BE TRADED? 7 POSSIBLE TRADES!", "screen_name": "WT       S2323", "id": 925529722926370816, "time": "Wed Nov 01 01:07:36 +0000 2017"}

{"url": "http://youtu.be/mI7XXoSHHg4?a", "text": "I liked a @YouTube video  Dat $tick - Rich Chigga (ACOUSTIC COVER)", "screen_name": "rifqihahay       ", "id": 925529589903962119, "time": "Wed Nov 01 01:07:04 +0000 2017"}

0 个答案:

没有答案