通过 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 中填充数据