🅘 ❤ 🅛🅘🅝🅤🅧
 Аватар для EnotProgrammist
17 / 46 / 13
Регистрация: 19.11.2016
Сообщений: 95

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

12.07.2019, 11:50. Показов 5295. Ответов 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,249
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 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru