Разбиение файла .txt на элементы - PullRequest
1 голос
/ 27 сентября 2019

Поскольку мы не можем читать напрямую из файла Json, я использую .txt.Похоже, что с большим количеством элементов, разделенных ",".

[
  {
    "Item_Identifier": "FDW58", 
    "Outlet_Size": "Medium"

  },
  {
    "Item_Identifier": "FDW14",
    "Outlet_Size": "Small"
  },
]

Я хочу посчитать количество элементов, здесь я бы получил 2. Проблема в том, что я не могу разделить текст на элементы, разделенные запятой ','.Я получаю каждую строку отдельно, даже если я конвертирую ее в формат json.

lines = p | 'receive_data' >> beam.io.ReadFromText(
    known_args.input)\
    | 'jsondumps' >> beam.Map(lambda x: json.dumps(x))\
    | 'jsonloads' >> beam.Map(lambda x: json.loads(x))\
    | 'print' >> beam.ParDo(PrintFn()) \

1 Ответ

1 голос
/ 27 сентября 2019

Файл .json - это просто текстовый файл, содержимое которого находится в формате JSON-parseable.

Ваш JSON недействителен, потому что он содержит запятые.Это должно работать:

import json

j = r"""
[
    {
        "Item_Identifier": "FDW58",
        "Outlet_Size": "Medium"
    },
    {
        "Item_Identifier": "FDW14",
        "Outlet_Size": "Small"
    }
]
"""

print(json.loads(j))
...