sam winter Ответов: 0

Извлечение списка кортежей из списка словарей, некоторые значения разделены запятыми и одинарными кавычками, а некоторые-без них


У меня есть список словарей, каждый словарь содержит:

Имя
Второе имя
Фамилия
Заглавие
Адрес
Адрес электронной почты

Программа лояльности для одного клиента. Некоторые из этих сведений могут отсутствовать

сегмент = [{'имя': 'Эльза', 'фамилия': 'Мороз', 'титул': 'Принцесса', 'адрес': '33 Касл-стрит, Лондон', 'программа лояльности': 'золото'}, {'имя': 'Анна', 'фамилия': 'Мороз', 'титул': 'Принцесса', 'программа лояльности': 'платина'}, {'имя': 'Гарри', 'отчество': 'Гарольд', 'фамилия': 'Заяц', 'название': 'Мистер', 'адрес электронной почты': 'harry.harold@hare.name", "программа лояльности": "серебро"}]
Для клиентов, у которых есть физический адрес, мне нужно извлечь список кортежей. Каждый Кортеж представляет одного клиента и содержит его должность, имя, отчество и фамилию в указанном порядке, если они определены, а также почтовый адрес.

Похоже, мой код работает.

Однако внутри каждого кортежа должны быть одинарные кавычки вокруг целого, а не отдельных частей имени клиента. Там также должны быть кавычки вокруг адреса. Запятая должна разделять адрес и полное имя.

("Принцесса Эльза Фрост", "33 Касл-Стрит, Лондон")

Что я уже пробовал:

My code is returning the right information, but the elements of a patients name are separated by commas and single quotation marks

Input:

def process_clients(segment):

    #Creating a list to contain tuples with client full name and mailing address. 
    updated = []
    #Interacting through each dictionary, which represents each client
    for dic in segment:
        newclient=[]
    #Adding clients with a mailing address
        try:
            add = dic["address"]
        except:
            continue
    #Adding, in order, the "title", "first-name", "middle-name", "last-name" and "address" of each client
        for data in ["title", "first-name", "middle-name", "last-name", "address"]:
            try:
                value = dic[data]
                newclient.append(value)
    #If "title", "first-name", "middle-name" or "last-name" is not present in a clients data, no action is taken
            except:
                pass
    #Additing the tuples with extracted client data to the created list        
        updated.append(tuple(newclient))
    return updated


process_clients(segment)


Output:

[('Princess',' Elsa ',' Frost ', '33 Castle Street, London')]

Gerry Schmitz

Если нет других одинарных кавычек, просто удалите их все и просто добавьте по одной на каждом конце.

Заменить все "'" на "" и т.д.

0 Ответов