【问题标题】:Python: How can I split the string properly to save in the format of csv?Python:如何正确拆分字符串以保存为 csv 格式?
【发布时间】:2021-02-05 02:15:25
【问题描述】:

我正在尝试以 csv 格式保存我的字符串。 字符串看起来像这样,行分隔为 '\n',:

12,12,11,13,11,12
21,15,21,23,41,26
34,16,46,17,21,15
44,17,22,39,10,13

等等。我还有一个手动编写的标题列表,例如

['A', 'B', 'C', 'D', 'E', 'F']

当我尝试使用 csv 编写器编写此内容时,

with open('output.csv', 'w', newline='') as csvwriter:
    writer = csv.writer(csvwriter, dialect='excel')
    writer.writerow(header) # write header
    for r in output.splitlines():
        writer.writerows(r)
    csvwriter.close()

但是当我查找输出文件时,

A,B,C,D,E,F
1
2
","
1
2
","
1
1
","
... (and so on)

为什么会发生这种情况,我该如何解决?感谢您的帮助。

【问题讨论】:

    标签: python csv export-to-csv


    【解决方案1】:

    如果你的字符串是这样的:

    string = '''12,12,11,13,11,12
    21,15,21,23,41,26
    34,16,46,17,21,15
    44,17,22,39,10,13'''
    headers = ['A', 'B', 'C', 'D', 'E', 'F']
    

    没有任何库:

    with open('untitled.txt', 'w') as f:
        f.write(','.join(headers)+'\n')
        for line in string:
            f.write(line)
    

    你可以把它做成 pandas csv 然后保存:

    import pandas as pd
    data = []
    for i in string.split('\n'):
        data.append(i.split(','))
    csv = pd.DataFrame(data=data, columns=headers)
    
    csv.to_csv('path_to_save', index=False)
    

    【讨论】:

    • 我不想为了导出 csv 而导入另一个库。
    • 添加了一个没有任何库的选项
    • 这很完美。我不确定为什么我的代码不起作用。你有什么线索吗?
    • 你的字符串已经用行分隔,但你也在做for r in output.splitlines():。我认为这里的分割线是将字符串进一步分割成单个字符?如果你只是在没有分割线的情况下循环输出,它也应该可以工作。
    • 还有一件事...如果您使用with open....,则无需关闭文件,因为它会在with 上下文结束后自行发生。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多