Упростить список/массив на python
у меня такой список
[
"[('djlf',",
'),',
"('j',",
'),',
"('Сало',",
')]'
]
и его надо упростить до "djlf,j,Сало"
пробовал через print(*list), но не получилось, список приходит с ms sql
dbCursor.execute("select Tovar from BazaMSK")
data = dbCursor.fetchall()
Ответы (3 шт):
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 и не больших доработок парсера -> ЗДЕСЬ ПОДРОБНЕЙ
Ну вот вам в одну строчку:
a = [
"[('djlf',",
'),',
"('j',",
'),',
"('Сало',",
')]'
]
res = ','.join(map(lambda x: x.split("'")[1], a[::2]))
print(res)
Вывод:
djlf,j,Сало
По шагам:
- Берём только чётные строки из списка
- Разбиваем эти строки по символу одиночной кавычки
' - Берём только второй элемент из каждой такой разбитой строки
- Соединяем полученные элементы через запятую в одну строку
Конкретно на примере ваших данных это работает. Но не зная остальных данных не поручусь, что будет работать везде, нужно проверять, возможно, механизм разбора должен быть другим, более универсальным.