2015-09-27 72 views
0

我试图将此3,1 GB文本文件从https://snap.stanford.edu/data/ 转换为csv文件。所有数据的结构类似:对csv大文本文件,无法打开文本文件

  • 名称:东西
  • 年龄:东西
  • 性别:东西

这使得它与某些万线的一个相当大的文本文件。 我试图写一个py脚本来转换它,但由于某种原因,它不会读取我的每个循环中的行。

下面是代码:

import csv 


def trycast(x): 
    try: 
     return float(x) 
    except: 
     try: 
      return int(x) 
     except: 
      return x 

cols = ['product_productId', 'review_userId', 'review_profileName', 'review_helpfulness', 'review_score', 'review_time', 'review_summary', 'review_text'] 

f = open("movies.txt", "wb") 
w = csv.writer(f) 
w.writerow(cols) 


doc = {} 

with open('movies.txt') as infile: 
    for line in infile: 
     line = line.strip() 
     if line=="": 
      w.writerow([doc.get(col) for col in cols]) 
      doc = {} 
     else: 
      idx = line.find(":") 
      key, value = tuple([line[:idx], line[idx+1:]]) 
      key = key.strip().replace("/", "_").lower() 
      value = value.strip() 
      doc[key] = trycast(value) 
    f.close() 

我不知道这是否是因为文件是大的,因为regulare记事本程序将无法打开它。

非常感谢! :-)

回答

2

在行f = open("movies.txt", "wb")中,您打开要写入的文件,从而删除其所有内容。稍后,您正在尝试从同一个文件读取数据。如果你改变输出文件名,它可能工作正常。 (我不打算下载3.1 GB来测试它;))

+0

你是个天才谢谢! #awesomePersonAboveThisComment – McBoman