gpt4 book ai didi

python - 处理用 Python 解析的 csv 文件中的额外换行符(回车符)?

转载 作者:太空狗 更新时间:2023-10-29 17:13:48 24 4
gpt4 key购买 nike

我有一个 CSV 文件,其中包含包含换行符的字段,例如:

A, B, C, D, E, F
123, 456, tree
, very, bla, indigo

(在这种情况下,第二行的第三个字段是“tree\n”

我尝试了以下方法:

import csv
catalog = csv.reader(open('test.csv', 'rU'), delimiter=",", dialect=csv.excel_tab)
for row in catalog:
print "Length: ", len(row), row

我得到的结果是这样的:

Length:  6 ['A', ' B', ' C', ' D', ' E', ' F']
Length: 3 ['123', ' 456', ' tree']
Length: 4 [' ', ' very', ' bla', ' indigo']

有人知道如何快速删除无关的换行符吗?

谢谢!

最佳答案

假设您有这个 Excel 电子表格:

Common 'gottchas' in an Excel file

注意:

  1. C2 中的多行单元格;
  2. 在C1和D3中嵌入逗号;
  3. D4 中的空白单元格和带空格的单元格。

在 Excel 中将其保存为 CSV,您将获得此 csv 文件:

A1,B1,"C1,+comma",D1
,B2,"line 1
line 2",D2
,,C3,"D3,+comma"
,,,D4 space

您可能希望将其读入 Python,其中的空白单元格仍然有意义并且嵌入的逗号得到正确处理。

所以,这个:

with open("test.csv", 'rU') as csvIN:
outCSV=(line for line in csv.reader(csvIN, dialect='excel'))

for row in outCSV:
print("Length: ", len(row), row)

正确生成 Excel 中表示的 4x4 List of List 矩阵:

Length:  4 ['A1', 'B1', 'C1,+comma', 'D1']
Length: 4 ['', 'B2', 'line 1\nline 2', 'D2']
Length: 4 ['', '', 'C3', 'D3,+comma']
Length: 4 ['', '', '', 'D4 space']

您发布的示例 CSV 文件缺少带有“额外换行符”的字段周围的引号,使该换行符的含义不明确。是新行还是多行字段?

因此,您只能解释这个 csv 文件:

A, B, C, D, E, F
123, 456, tree
, very, bla, indigo

像这样的一维列表:

with open("test.csv", 'rU') as csvIN:
outCSV=[field.strip() for row in csv.reader(csvIN, delimiter=',')
for field in row if field]

产生这个一维列表:

['A', 'B', 'C', 'D', 'E', 'F', '123', '456', 'tree', 'very', 'bla', 'indigo']

然后可以根据需要将其解释并重新分组到任何子组中。

python 中惯用的重组方法使用 zip,如下所示:

>>> zip(*[iter(outCSV)]*6)
[('A', 'B', 'C', 'D', 'E', 'F'), ('123', '456', 'tree', 'very', 'bla', 'indigo')]

或者,如果你想要一个列表的列表,这也是惯用的:

>>> [outCSV[i:i+6] for i in range(0, len(outCSV),6)]
[['A', 'B', 'C', 'D', 'E', 'F'], ['123', '456', 'tree', 'very', 'bla', 'indigo']]

如果您可以更改 CSV 文件的创建方式,那么解释起来就不会那么模糊了。

关于python - 处理用 Python 解析的 csv 文件中的额外换行符(回车符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com