如何在python中将单元格中的换行符添加到csv中?

xsuvu9jc  于 2023-02-27  发布在  Python
关注(0)|答案(1)|浏览(227)

在Vscode的CSV编辑器中,它看起来如下所示:

这是一个
我添加换行符的代码:

lista=''
for i in value:
            lista = lista + i + '\n'
stock_bodega.append(lista)

 result = pandas.DataFrame(list(zip(stock_bodega,inv_bodega)), columns =headers)
 result.to_csv(r''+funciones.RESULTS_PATH+FILE_NAME, header=True, index=False, sep=',', mode='w')

但如果我用文本编辑器或excel打开csv,它看起来像这样:
"," 0
0
0
"、" S
S型
S型
Excel表格:

预期产出:

bzzcjhmw

bzzcjhmw1#

原始CSV类似于:

Col_1,Col_2
"foo
Foo
FOO","1 I
2 II
3 III"
"bar
Bar
BAR","a A
b B
c C"
"baz
Baz
BAZ","4 $
5 %
6 ^"

当以表格形式查看时,它将类似于:

+-------+-------+
| Col_1 | Col_2 |
+-------+-------+
| foo   | 1 I   |
| Foo   | 2 II  |
| FOO   | 3 III |
+-------+-------+
| bar   | a A   |
| Bar   | b B   |
| BAR   | c C   |
+-------+-------+
| baz   | 4 $   |
| Baz   | 5 %   |
| BAZ   | 6 ^   |
+-------+-------+

我可以用Python对这些数据建模,如下所示:

my_data = [
    [ "Col_1"         , "Col_2"            ],
    [ "foo\nFoo\nFOO" , "1 I\n2 II\n3 III" ],
    [ "bar\nBar\nBAR" , "a A\nb B\nc C"    ],
    [ "baz\nBaz\nBAZ" , "4 $\n5 %\n6 ^"    ],

]

我不使用Pandas,所以我将展示如何使用csv模块将该数据结构写入CSV:

import csv

with open("output_rows.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(my_data)

查看您的行:

result = pandas.DataFrame(list(zip(stock_bodega,inv_bodega)), columns=headers)

我相信你可以很容易地把这个建筑交给Pandas,也许:

result = pandas.DataFrame(my_data[1:], columns=my_data[0])

如果我有一个值列表,这些值应该最终连接在一起,成为列中的单个多行字段,例如:

col1_src = [
    ["foo", "Foo", "FOO"],
    ["bar", "Bar", "BAR"],
    ["baz", "Baz", "BAZ"],
]

然后,我会迭代这些列表,并使用换行符将它们连接起来,例如:

col1_data = []
for line_values in col1_src:
    col1_data.append("\n".join(line_values))

print(col1_data)
[
    "foo\nFoo\nFOO",
    "bar\nBar\nBAR",
    "baz\nBaz\nBAZ",
]

以及

col2_src = [
    ["1 I", "2 II", "3 III"],
    ["a A", "b B", "c C"],
    ["4 $", "5 %", "6 ^"],
]

col2_data = []
for line_values in col2_src:
    col2_data.append("\n".join(line_values))
[
    "1 I\n2 II\n3 III",
    "a A\nb B\nc C",
    "4 $\n5 %\n6 ^",
]

我可以把它传递给csv.writer()(可能还有Pandas):

with open("output_cols.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Col_1", "Col_2"])
    writer.writerows(list(zip(col1_data, col2_data)))
    • 更新**

关于Excel中的数据看起来不正确。我没有Excel,但以下是在其他几个电子表格应用程序中查看的数据:
| 应用程序|图像|
| - ------|- ------|
| macOS编号|

|
| Google表单|

|
| Dropbox预览|

|
无论如何,您可以尝试将行尾的"\n"更改为"\r\n",尽管CSV规范规定两者都是可接受的(因此Excel也应该接受两者之一)。
还有这个线程Importing CSV with line breaks in Excel

相关问题