python - 使用 Python 转换为 CSV 的文本文件与使用 Excel 转换不同

标签 python excel csv

我有一个程序可以解析从眼动仪输出的大量数据文件。原始文件是文本格式的,但我需要一个 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/

相关文章:

python - 值错误 : Couldn't broadcast input array from shape (51) to (51, 1)

python - TeamViewer API 和 PostMan

python - numpy 导入时出现 KeyError 'PATH'

excel - 以编程方式将 Excel 中的宏分配给从文件添加的图片

ruby-on-rails - 打开包含要在 rake 任务中使用的 csv 文件的 zip 文件

python - 如何使用 csv 模块处理字段值内的双引号?

python - 从 matplotlib 中的给定颜色图创建颜色生成器

vba - 使用公式获取 Excel 中范围的名称

python - 与 Matlab 相比,Numpy 加载 csv 太慢了

python - 如何使用pandas python根据给定的IP地址将大型excel文件拆分为多个工作表