【发布时间】:2018-11-23 07:36:17
【问题描述】:
我正在尝试将 JSON 文件转换为字典并应用键/值对,因此我可以使用 groupbykey() 基本上对键/值对进行重复数据删除。
这是文件的原始内容:
{"tax_pd":"200003","ein":"720378282"}
{"tax_pd":"200012","ein":"274027765"}
{"tax_pd":"200012","ein":"042746989"}
{"tax_pd":"200012","ein":"205993971"}
我已经这样格式化了:
(u'201208', u'010620100')
(u'201208', u'860785769')
(u'201208', u'371650138')
(u'201208', u'237253410')
我想将这些转换为键/值对,以便在我的数据流管道中应用 GroupByKey。我想我需要先把它变成字典?
我是 python 和谷歌云应用程序的新手,如果有一些帮助会很棒!
编辑:代码 sn-ps
with beam.Pipeline(options=pipeline_options) as p:
(p
| 'ReadInputText' >> beam.io.ReadFromText(known_args.input)
| 'YieldWords' >> beam.ParDo(ExtractWordsFn())
# | 'GroupByKey' >> beam.GroupByKey()
| 'WriteInputText' >> beam.io.WriteToText(known_args.output))
class ExtractWordsFn(beam.DoFn):
def process(self, element):
words = re.findall(r'[0-9]+', element)
yield tuple(words)
【问题讨论】:
-
看起来您已经在字典中找到了它。你可能想使用
json.load或类似的东西 -
似乎不清楚。如何从 200003 中得到 201208?你能指定你需要的精确格式吗?
-
我会在帖子中添加一些sn-ps的代码
-
示例sn-p中的数字不匹配,因为我没有给出匹配的值,对不起,假设这些数字是相同的。
标签: python json dictionary google-cloud-platform dataflow