Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
🅘 ❤ 🅛🅘🅝🅤🅧
 Аватар для EnotProgrammist
17 / 46 / 13
Регистрация: 19.11.2016
Сообщений: 95

Преобразование строки в список чисел

12.07.2019, 11:50. Показов 5286. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане! ruSO окончательно развалился, поэтому решил задать свой вопрос здесь.
Есть набор строк следующего типа:
  1. 0.0000140-146
  2. 0.0000158-169-186-199
  3. 0.00000155-171-180
  4. 179-185-194-202

Необходимо преобразовать их соответственно в списки:
  1. [0.0000140, 0.0000146]
  2. [0.0000158, 0.0000169, 0.0000186, 0.0000199]
  3. [0.00000155, 0.00000171, 0.00000180]
  4. [179, 185, 194, 202]

Не подскажете, как это можно сделать? Если с последним случаем все ясно, то первые три вызывают затруднения.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2019, 11:50
Ответы с готовыми решениями:

Преобразование строки в список
Доброго времени суток, недавно начал изучать python, подскажите пожалуйста в чём моя ошибка, нужно преобразовать строку в список. Возможно...

Преобразование строки в список
Есть предикат преобразования строки в список, но он выводит все многозначные числа задом на перед, то есть вместо 45 выводит 54, помогите...

Преобразование строки в список символов
Нужно решить задачку на прологе, она простая. Но дело в том, что я ну ни как со списками=( Условие: Для заданной строки символов создать...

4
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,248
12.07.2019, 12:02
EnotProgrammist, можно парсить руками, можно использовать механизмы питона по обработке строк.
0
🅘 ❤ 🅛🅘🅝🅤🅧
 Аватар для EnotProgrammist
17 / 46 / 13
Регистрация: 19.11.2016
Сообщений: 95
12.07.2019, 12:12  [ТС]
Alli_Lupin, вот с использованием механизмов по обработке строк проблемы и возникли.

Руками - вообще не вариант. Нужно парсить значения сразу же после получения (а их там будет сотни-тысячи).
0
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
12.07.2019, 12:35
Лучший ответ Сообщение было отмечено EnotProgrammist как решение

Решение

Как пример. Нужно еще реализовать обработку с отрицательными значениями (и если вещественное число больше 1).
Можно подумать над реализацией, используя степени 10.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import re
 
lst = ['0.0000140-146',
       '0.0000158-169-186-199',
       '0.00000155-171-180',
       '179-185-194-202']
 
def foo(string):
    splt = string.split('-')
    first = splt[0]
    if first.startswith('0.'):
        # float
        splt.pop(0)
        idx = string.index(re.search(r'1|2|3|4|5|6|7|8|9', string).group())
        h = first[:idx]
        lst = [first]
        lst.extend([h+s for s in splt])
        return list(map(float, lst))
    else:
        # int
        return list(map(int, splt))
 
for item in lst:
    print foo(item)
Реализация без строк:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def isInt(value):
    try:
        int(value)
        return True
    except ValueError:
        return False
 
def isFloat(value):
    # float, исключая int
    if isInt(value):
        return False
    try:
        float(value)
        return True
    except ValueError:
        return False
 
def foo(string):
    splt = string.split('-')
    first = splt[0]
    if isFloat(first):
        first = float(first)
        tmp = first % 10
        lst = [float(splt.pop(0))]
        lst.extend([float(s)*tmp for s in splt])
        return lst
    else:
        # int
        return list(map(int, splt))
1
🅘 ❤ 🅛🅘🅝🅤🅧
 Аватар для EnotProgrammist
17 / 46 / 13
Регистрация: 19.11.2016
Сообщений: 95
12.07.2019, 13:29  [ТС]
Спасибо. Немного доработал код, теперь работает и с дробными числами больше единицы:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
lst = ['1.0000140-146', '0.0000158-169-186-199', '0.00000155-171-180', '179-185-194-202']
 
def isInt(value):
    try:
        int(value)
        return True
    except ValueError:
        return False
 
def isFloat(value):
    if isInt(value):
        return False
    try:
        float(value)
        return True
    except ValueError:
        return False
 
def toList(string):
    splt = string.split('-')
    if isInt(splt[0]):
        for i in range (splt.__len__()):
            splt[i] = int(splt[i])
        return splt
    elif splt.__len__() == 1:
        if isInt(splt[0]):
            return [int(splt)]
        else:
            return [float(splt)]
    else:
        maxLen = 0
        for i in range (splt.__len__() - 1):
            if splt[i + 1].__len__() > maxLen:
                maxLen = splt[i + 1].__len__()
        startStr = splt[0][:(splt[0].__len__() - maxLen)]
        splt[0] = float(splt[0])
        for i in range (splt.__len__() - 1):
            splt[i + 1] = float(startStr + splt[i + 1])
        return splt
 
for string in lst:
    print(toList(string))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2019, 13:29
Помогаю со студенческими работами здесь

Преобразование строки в список слов
создать предикат, преобразующий строку в список слов

Преобразование строки в список частоты элементов
Надо преобразовать строку в список. Пример "огород" ->. Написал несколько функций, но не могу их связать в одну. Выдает, что нет решений. ...

Преобразование строки в список с целыми числами
Есть строка st нужно все её значения преобразовать в список целых чисел. Что-то не выходит. for i in a: if a.count(i) > 1: ...

Преобразование списка в список простых чисел
Добрый день, уважаемые форумчане! Я в Лиспе совсем новичок, поэтому решение задач пока дается с трудом. Помогите с написанием...

Преобразование строки русского текста в список слов
Аналогичная задача для английского языка решается довольно просто Domains list=symbol* Predicates scan(string,list)


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru