python - 来自字符串输出的 CSV 文件

标签 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

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

最佳答案

第一种方法:使用 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)

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

注意事项

  • 由于输入字符串在逗号后有空格(换句话说,条目前有初始空格),我使用 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)

关于python - 来自字符串输出的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834861/

相关文章:

python - 基于字典向数据框添加新列

python - 如何使用mysql-connector-python指定端口号(错误2003)

python - Django ORM 命令获取不带空字段的不同值

python - Vim:如何在正则表达式匹配后的行上开始语法折叠? ( python 功能)

ruby-on-rails - 如何仅将 csv 中的几列插入表中

php - 将文本文件加载到 mysql 数据库中并为每一行添加时间戳

python - django 上传文件,处理 pandas 并下载为 csv

Python:如何将复杂的SQL聚合语句转换为pandas?

python - Python 的主线程停止时会收集垃圾吗?

python - 将多列求和为两列输出/数据帧