通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]

Posted

技术标签:

【中文标题】通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]【英文标题】:txt to CSV via python: why am getting extra empty lines? [duplicate]通过 python 将 txt 转换为 CSV:为什么会出现额外的空行? [复制] 【发布时间】:2021-07-09 07:43:45 【问题描述】:

我想将 .txt 文件转换为 CSV 格式。这是我的 .txt 文件中的一个示例:

0 1
1 346
5 10

这是我正在使用的代码:

import csv
txtfile = r"file.txt"
csvfile = r"file.csv"
with open(txtfile, 'r') as infile, open(csvfile, 'w') as outfile:
    stripped = (line.strip() for line in infile)
    lines = (line.split() for line in stripped if line)
    writer = csv.writer(outfile)
    writer.writerows(lines)

因此,我在每行带有数字的行之后都有一个空行(=> 所有偶数行都是空的): https://i.stack.imgur.com/19QAV.png。 但是,.txt 文件中没有空行。

有人可以帮我弄清楚为什么我会在 CSV 文件中得到那些多余的空行吗?

【问题讨论】:

txt-to-csv转换的原因是什么?如果您只想通过 Spreadsheed 软件打开文件,您可以考虑重命名文件扩展名并相应地设置导入选项。 嗨@buran!是的,这正是我的问题,非常感谢!我之前没有找到这个帖子。 嗨@albert!感谢您的评论。在 txt 文件中,我有一个有向图的边列表:第一列是头,第二列是尾。使用它,我要计算这个图的强连通分量,所以我认为 CSV 格式比 txt 更方便解决这个任务。我需要将“heads”和“tails”放在不同的列中,而重命名文件扩展名会将整个原始文件放入第一列的一个单元格中;因此,不幸的是,在这里简单地重命名并没有真正的帮助。 潜在问题似乎与您的数据导入选项有关。将扩展名从 csv 重命名为 txt 不会更改文件内容。此外,txt 和 csv 在技术上是相同的(带有数据的纯文本文件)。 【参考方案1】:

csv.writer(outfile) 应该是 csv.writer(outfile, newline='')。这告诉 csv-writer 使用空字符串作为换行符。这意味着它不使用新行。

【讨论】:

谢谢!我还使用了 buran 上面提到的链接,所以我在这里放置了换行符:with ... open(csvfile, 'w', newline = '') as outfile:【参考方案2】:

我建议使用pandas 的方法,您可以将文本文件读入DataFrame,然后将其写入CSV 文件:

import pandas as pd

df = pd.read_table('file.txt', sep='\s', engine='python', header=None)
df.to_csv('file.csv', header=False, index=False)

这里可能有点过头,但绝对值得学习pandas

【讨论】:

感谢您的评论和建议! pandas 是我绝对需要学习的东西。

以上是关于通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Cloud 功能将 TXT 文件转换为 CSV 并在 Google BigQuery 中填充数据

python 文件格式为 txt 转换成 csv 格式

将python Dataframe转换为Matlab文件

Python文件转换需要2天以上

使用python将Rest Api json结果转换为csv

将.csv转换为.txt