gpt4 book ai didi

python - 我们如何使用 python sdk 在 Apache Beam 中读取带有外壳的 CSV 文件?

转载 作者:行者123 更新时间:2023-12-04 12:10:47 28 4
gpt4 key购买 nike

我正在阅读一个逗号分隔的 CSV 文件,其中的字段用双引号括起来,其中一些字段的值中也有逗号,例如:"abc","def,ghi","jkl"有什么方法可以使用 Apache Beam 将此文件读入 PCollection 吗?

最佳答案

数据用双引号括起来的示例 csv 文件。

"AAA", "BBB", "Test, Test", "CCC" 
"111", "222, 333", "XXX", "YYY, ZZZ"

您可以使用 csv module来自标准库:
def print_row(element):
print element

def parse_file(element):
for line in csv.reader([element], quotechar='"', delimiter=',', quoting=csv.QUOTE_ALL, skipinitialspace=True):
return line

parsed_csv = (
p
| 'Read input file' >> beam.io.ReadFromText(input_filename)
| 'Parse file' >> beam.Map(parse_file)
| 'Print output' >> beam.Map(print_row)
)

这给出了以下输出
['AAA', 'BBB', 'Test, Test', 'CCC']
['111', '222, 333', 'XXX', 'YYY, ZZZ ']

需要注意的一件事是 csv.reader对象期望 iterator这将返回 iterator的字符串。这意味着您不能将字符串直接传递给 reader() ,但您可以将其包含在 list 中如上。然后您将迭代输出以获得最终字符串。

关于python - 我们如何使用 python sdk 在 Apache Beam 中读取带有外壳的 CSV 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57890169/

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