我试图从https://snap.stanford.edu/data/转换这个3 GB的文本文件 进入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()
我不确定是不是因为文档很大,因为一个规则的记事本程序无法打开它。
预先感谢! : - )
答案 0 :(得分:2)
在f = open("movies.txt", "wb")
行中,您打开文件进行书写,从而删除其所有内容。稍后,您尝试从同一个文件中读取。如果更改输出文件名,它可能正常工作。 (我不会下载3.1 GB进行测试。;))