Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/35: Рейтинг темы: голосов - 35, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 26

Перевести строку в список

17.07.2021, 10:57. Показов 7430. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть строка my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
нужно перевести ее в список, состоящий из чисел

Сделал так, но что-то не работает, выдает пустой список. Видимо, что-то напутал с логикой.
Поправьте пожалуйста.

Python
1
2
3
4
5
6
7
8
9
10
11
12
my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
my_list = []
 
temp = ''
for i in range(len(my_string)):
  if my_string[i] != ',' or my_string[i] != ' ' or my_string[i] != '[' or my_string[i] != ']':
    temp += my_string[i]
  elif temp != '':
    my_list.append(temp)
    temp = ''
 
print(my_list)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.07.2021, 10:57
Ответы с готовыми решениями:

Перевести строку в список
Необходимо перевести строку в список. Концепцию понимаю, но как и что дописать, что бы была приличная видимость списка, без запятых и...

Строку ('\n' разделитель) перевести в список
В общем есть строка вида smth1\nsmth2\nsmth3, нужно из нее зделать список вида . Знаю, что решение элементарно, но сам найти не смог....

Двунаправленный линейный список строк. Вставить строку, удалить строку и заменить строку
3 двунаправленный линейный список строк.требуется вставить строку после строки с номером и удалить строку с номером и заменить строку с...

14
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
17.07.2021, 11:07
Elif - у вас не выполняется, потому что это иначе если
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
17.07.2021, 11:22
SebPereira, пойдет?
Python
1
2
3
4
5
6
7
8
my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
print(my_string.strip())
mylist = list()
for i in my_string:
    if i.isdigit():
        i = int(i)
        mylist.append(i)
print(mylist)
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
17.07.2021, 11:23
Python
1
2
3
4
5
6
7
>>> import ast
>>> my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
>>> lst = ast.literal_eval(my_string)
>>> lst
[7, 1, 12, 72, 3, 15, 8, 13]
>>> type(lst), type(lst[0])
(<class 'list'>, <class 'int'>)
2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.07.2021, 11:25
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

SebPereira,
Уже раз 100 на этом форуме в разделе Python показывали как это сделать десятками нормальных способов.
Твой способ не питоничный.

Python
1
2
3
4
5
>>> my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
>>> [int(i) for i in my_string[1:-1].split(", ")]
[7, 1, 12, 72, 3, 15, 8, 13]
>>> 
>>>
2
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
17.07.2021, 11:26
Python
1
2
3
4
>>> my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
>>> lst = list(map(int, my_string[1:-1].split(',')))
>>> lst
[7, 1, 12, 72, 3, 15, 8, 13]
0
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 26
17.07.2021, 12:29  [ТС]
Dax, у вас если перебором значений выдает цифры, а не числа

Добавлено через 3 минуты
ioprst и Garry Galler:
Забыл написать в условии - перебором элементов строки. Пардон.

Добавлено через 2 минуты
ioprst и Garry Galler:
Забыл написать в условии: только перебором элементов строки. Пардон
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.07.2021, 12:44
Лучший ответ Сообщение было отмечено SebPereira как решение

Решение

Цитата Сообщение от SebPereira Посмотреть сообщение
только перебором элементов строки.
Вот тебе лайфхак (всякие or не нужны):

Python
1
2
3
4
5
6
for i in range(len(my_string)):
    if my_string[i] not in  [',', ' ', '[' , ']']:  #или так:  (',', ' ', '[' , ']')
        temp += my_string[i]
    elif temp != '':
        my_list.append(temp)
        temp = ''
Добавлено через 12 минут
P.S. Если ты не понял почему не работает твой код: ты перепутал or c and.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
17.07.2021, 13:03
Python
1
2
3
4
5
import re
my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
res = re.findall(r'\d+', my_string)
for i in res: 
      print(i)
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
17.07.2021, 13:06
Цитата Сообщение от ioprst Посмотреть сообщение
ast.literal_eval
Прикольно:
Safely evaluate an expression node or a string containing a Python
expression. The string or node provided may only consist of the following
Python literal structures: strings, bytes, numbers, tuples, lists, dicts,
sets, booleans, and None.
0
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 26
17.07.2021, 13:18  [ТС]
Garry Galler:

Выдает ошибку
----> 4 elif temp != '':
5 my_list.append(temp)
6 temp = ''

NameError: name 'temp' is not defined

Добавлено через 3 минуты
Dax, спасибо!

Python
1
2
3
4
5
import re
my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
res = re.findall(r'\d+', my_string)
for i in res: 
      print(i)
А можете подсказать решение встроенными инструментами, без подключенных библиотек?

Добавлено через 4 минуты
Цитата Сообщение от Garry Galler Посмотреть сообщение
P.S. Если ты не понял почему не работает твой код: ты перепутал or c and.
Спасибо, помогло))
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
17.07.2021, 13:33
Цитата Сообщение от SebPereira Посмотреть сообщение
NameError: name 'temp' is not defined
OMG... Я тебе твой же код дал - только не стал копировать полностью все объявления. Нельзя же так бездумно относиться к программированию: это тебе не на кассе в макдональдсе стоять - здесь мозги включать нужно.
0
0 / 0 / 0
Регистрация: 17.07.2021
Сообщений: 26
17.07.2021, 15:05  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
OMG... Я тебе твой же код дал - только не стал копировать полностью все объявления.
Тупанул))
0
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
21.07.2021, 15:35
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Python
1
2
my_string = '[7, 1, 12, 72, 3, 15, 8, 13]'
eval(my_string)
Не питонично, применяется в некоторых ситуациях, при десериализации из файла, например.
1
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
21.07.2021, 16:32
Можно распарсить, как json.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2021, 16:32
Помогаю со студенческими работами здесь

Перевести список чисел в список соответствующих слов
Перевести список чисел в список соответствующих слов. Турбо пролог

Перевести список чисел в список соответствующих слов
Перевести список чисел в список соответствующих слов.

Ввести строку, число N. Вывести введенную строку на экран N раз (перевести в 32 битную версию)
org 100h mov ah,9 mov dx,msg1 int 21h mov ah,0ah ...

Перевести длинную бинарную строку в строку с десятичными цифрами
Добрый день. Проблема следующая: есть бинарное число 11010111010111111110.......11100011010110110 - необходимо его представить в виде...

Классы, перевести строку с из char * в строку и обратно...
Помогите решить... Определить два класса, строку с преобразование из char * в строку и обратно и Целое Int с преобразованием из int и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru