字符串输出的 CSV 文件

Juh*_*o M 2 python csv dataframe jupyter-notebook

我有这样的字符串输出:

Gender,Age,Weight,Height
Male, 55, 82, 180
Female, 34,55,167
Female,44,67,182
Male,81,73,175
Male,44,34,87,185
Run Code Online (Sandbox Code Playgroud)

从此输出生成 CSV 文件的最简单方法是什么?我尝试了一些 StringIO 方法,但无法让它们在 Python 3.6.0 中工作。

Hai*_* Vu 5

第一种方法:使用 StringIO

这是我的方法,我针对 Python 3.6 进行了测试:

import csv
from io import StringIO

my_string = """
Gender,Age,Weight,Height
Male, 55, 82, 180
Female, 34,55,167
Female,44,67,182
Male,81,73,175
Male,44,34,87,185
"""

buffer = StringIO(my_string)

reader = csv.reader(buffer, skipinitialspace=True)
with open('string2csv.csv', 'w') as out_file:
    writer = csv.writer(out_file)
    writer.writerows(reader)
Run Code Online (Sandbox Code Playgroud)

string2csv.csv 文件的内容:

Gender,Age,Weight,Height
Male,55,82,180
Female,34,55,167
Female,44,67,182
Male,81,73,175
Male,44,34,87,185
Run Code Online (Sandbox Code Playgroud)

笔记

  • 由于输入字符串在逗号后面有空格(换句话说,条目之前的初始空格),因此我使用参数skipinitialspace=True来去掉这些空格。
  • 通过使用writerows(复数)而不是writerow(单数),我可以编写更少的代码

第二种方法:分割线

如果您不想使用 StringIO,那么我们可以拆分行,将它们输入csv.reader并获得相同的结果:

my_string = """
Gender,Age,Weight,Height
Male, 55, 82, 180
Female, 34,55,167
Female,44,67,182
Male,81,73,175
Male,44,34,87,185
"""
reader = csv.reader(my_string.splitlines(), skipinitialspace=True)
with open('string2csv.csv', 'w') as out_file:
    writer = csv.writer(out_file)
    writer.writerows(reader)
Run Code Online (Sandbox Code Playgroud)