我有一个程序可以解析从眼动仪输出的大量数据文件。原始文件是文本格式的,但我需要一个 CSV 文件来进行数据分析。
我一直在做的是在 Excel 中打开文本文件,将其保存为 .csv 文件,然后通过我的解析器运行它。这工作正常,但很费力,所以我想创建一段代码在我的解析器的开头运行:它获取原始文本文件,将其转换为 CSV 文件,然后在刚刚制作的文件上运行解析器CSV 文件。
我尝试使用的代码如下,修改自 here :
txt_file = subjectNum + ".asc"
csv_file = "subject_" + subjectNum + ".csv"
in_txt = csv.reader(open(txt_file, "r"), delimiter = '\t')
out_csv = csv.writer(open(csv_file, 'w'))
out_csv.writerows(in_txt)
这会生成一个很好的文件,但是解析器无法像处理我在通过 Excel 进行转换时获得的“手动生成”文件那样处理它。解析器确实创建了文件,但它们是空的。
另外,我的源文本文件是 17.8mb。当我使用 Excel 将其转换为 CSV 时,生成的文件大小为 16mb,包含 237,218 行。当我使用上面的代码将文本文件转换为 CSV 时,生成的文件为 17.8mb 和 236,104 行。
当我用 Excel 手动转换时,上面的代码似乎遗漏了一些东西。
最佳答案
您需要在写入后关闭文件以确保它已完全写入磁盘。
此外,您应该始终以二进制模式 (Python 2)(或 newline=""
模式 (Python 3))打开文件。
with open(txt_file, "rb") as infile, open(csv_file, 'wb') as outfile:
in_txt = csv.reader(infile, delimiter = '\t')
out_csv = csv.writer(outfile)
out_csv.writerows(in_txt)
关于python - 使用 Python 转换为 CSV 的文本文件与使用 Excel 转换不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19097617/