Как разбить строку в массиве - PullRequest
1 голос
/ 11 июля 2019

Мне нужно разбить строку на «.»и все, что после, не имеет значения, мне просто нужен первый элемент с индексом [0].

Я пытался использовать .split ('.') [0] в цикле for, однако вывод никогда не меняется.

Файл text.txt выглядит следующим образом [{"description": "large", "istrue": "yes", "name": "george.doe.jane", "clear": "true", "money": 5000}] У него более одного объекта, но все они построены одинаково.

output_file = open ('text.txt', 'r')
json_array = json.load(output_file)
json_list = []
for item in json_array:
    name = "name"
    money = "money"
    json_items = {name:None, money:None}
    json_items[name.split('.')[0]] = item[name.split('.')[0]]
    json_items[money] = item[money]
    json_list.append(json_items)

Вывод в настоящее время выглядит как {'name': 'george.doe.jane', 'деньги ': 5000} Мне бы хотелось, чтобы это выглядело как {' name ':' george ',' doe ',' jane ',' money ': 5000}

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Вы можете использовать with менеджер контекста, чтобы открыть ваш файл, и разделить имя на ., чтобы создать список имен

import json

#Open the file
with open ('text.txt', 'r') as output_file:

    #Load the json array
    json_array = json.load(output_file)

    #Iterate through the list and append the resultant dictionary to the list
    json_list = [{'name': item['name'].split('.'), 'money': item['money']} for item in json_array]

    print(json_list)

Выход будет

[{'name': ['george', 'doe', 'jane'], 'money': 5000}]
0 голосов
/ 11 июля 2019

Я думаю, вы просто используете .split() неправильно: достаточно справедливо.Вот пример его использования:

s = 'h.e.l.l.o'
a = s.split('.')
# ['h', 'e', 'l', 'l', 'o']

Так что ваш цикл for, возможно, должен выглядеть примерно так:

for i in json_array:
    json_list.append({'name': i['name'].split('.'), 'money': i['money']})

вывод должен быть

json_list = [{'name': ['george', 'doe', 'jane'], 'money': 5000}]
...