【发布时间】:2020-04-06 17:54:49
【问题描述】:
我正在尝试在 python 中拆分一个 csv 文件。但是某些值(在一个单元格中)中有逗号。但该函数也在拆分它,因此给了我比预期更多的列。
以下是我的代码:
data = open('FInal_epm-00000-of-00001').read()
lines_of_data = data.splitlines()
tmp = []
for i in range(len(lines_of_data)):
tmp.append(re.split('\',|, ',lines_of_data[i]))
以下是示例输入:
['string_value', 'string_value', int_value, float_value, 'string_val, string_val']
理想输出:
row 1 :string_value, string_value, int_value, float_value, 'string_val, string_val'
我得到的输出:
row 1 : string_value, string_value, int_value, float_value, string_val, string_val
【问题讨论】:
-
为工作使用正确的工具。 docs.python.org/3/library/csv.html
-
使用 csv 模块。大量关于 SO 的示例。
-
这实际上是一个输入行?那么它根本不是一个csv文件。
int_value到底是什么?一个字面上就是那些字符的字符串?那么输出呢......你附加到一个列表但你的输出是一行?我们确实需要什么进出什么。 -
是的,它是一个输入行(它是一个 pcollection)并且用于 int_value 。您可以假设任何 int 值,因为我只想说输入数据是字符串及其值的混合。
-
最好只发布一个输入行而不是一些伪代码来描述数据的样子。您发布的不是 CSV。如果 int_value 只是我们应该填写的整数的占位符......为我们做这件事!例如,一个例子可以是
"foo,bar,20,1.222,'baz, qux'",期望的输出是一个python列表["foo", "bar", 20, 1.222, "baz, qux"]
标签: python csv apache-beam python-2.x