Упростить список/массив на python

у меня такой список

[
    "[('djlf',", 
    '),', 
    "('j',", 
    '),', 
    "('Сало',", 
    ')]'
]

и его надо упростить до "djlf,j,Сало"

пробовал через print(*list), но не получилось, список приходит с ms sql

dbCursor.execute("select Tovar from BazaMSK")
data = dbCursor.fetchall()

Ответы (3 шт):

Автор решения: Jack_oS
my_list = [
    "[('djlf',", 
    '),', 
    "('j',", 
    '),', 
    "('Сало',", 
    ')]'
]

Не оптимально и много букв, конечно, но так, чтоб был понятен механизм:

new_list = []
for word in my_list:
    tmp_str = ''
    for w in word:
        if w.isalpha():
            tmp_str += w
    new_list.append(tmp_str)

в new_list сейчас:

>>> new_list
['djlf', '', 'j', '', 'Сало', '']

и после:

new_str = ','.join(w for w in new_list if w)

в new_str будет искомый результат в виде строки:

>>> new_str
"djlf,j,Сало"
→ Ссылка
Автор решения: Андрей Коробейников

День добрый! Как написали в комментариях, лучше пересмотреть место получение такого списка, но если хочется разобрать именно его. То можно для начала соединить все это в строку и распарсить с помощью json:


data = [
    "[('djlf',", 
    '),', 
    "('j',", 
    '),', 
    "('Сало',", 
    ')]'
]

string_data = ''.join(data)
# "[('djlf',),('j',),('Сало',)]"

Это уже вполне валидная строка "Список кортежей". Которую можно распарсить с помощью json и не больших доработок парсера -> ЗДЕСЬ ПОДРОБНЕЙ

→ Ссылка
Автор решения: CrazyElf

Ну вот вам в одну строчку:

a = [
    "[('djlf',", 
    '),', 
    "('j',", 
    '),', 
    "('Сало',", 
    ')]'
]

res = ','.join(map(lambda x: x.split("'")[1], a[::2]))
print(res)

Вывод:

djlf,j,Сало

По шагам:

  • Берём только чётные строки из списка
  • Разбиваем эти строки по символу одиночной кавычки '
  • Берём только второй элемент из каждой такой разбитой строки
  • Соединяем полученные элементы через запятую в одну строку

Конкретно на примере ваших данных это работает. Но не зная остальных данных не поручусь, что будет работать везде, нужно проверять, возможно, механизм разбора должен быть другим, более универсальным.

→ Ссылка