Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Python - выбрать из строки вещественное число  (Прочитано 4739 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
фаербаг показывает, что целевая строка выглядит так: "1 496,00 руб. "
нужно получить "1496,00"
« Последнее редактирование: 10 Январь 2012, 18:10:45 от ⚡ Thunde® ⚡ »

Оффлайн akropotov

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #1 : 10 Январь 2012, 18:02:53 »
Если только цыфры и знак "," - то делай регуляруку и не парся.

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #2 : 10 Январь 2012, 18:08:34 »
покажи пример, я же над регуляркой уже пол часа и бьюсь, пробел (или не пробел) разделитель разрядов меня убивает...

пока сделал так

            price = re.findall('[0-9]+',price)
            try:
                price = price[0] + price[1] + ',' + price[2]
            except:
                price = price[0] + ',' + price[1]

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #3 : 11 Январь 2012, 05:36:18 »
что-то типа
's/\ //g'
's/(\s+)?р(уб)?\.?//g/'
адаптируй для питона

andrey_p

  • Гость
Re: Python - выбрать из строки вещественное число
« Ответ #4 : 12 Январь 2012, 07:30:56 »
>>> s = "1 496,00 руб. "
>>> def is_mychar(x):
...     return x.isdigit() or x == ","
...
>>> "".join((x for x in s if is_mychar(x)))
'1496,00'

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #5 : 12 Январь 2012, 11:21:00 »
andrey_p,
годный способ, попробую его.
спасибо.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #6 : 12 Январь 2012, 11:32:12 »
Еще вариант
s = "1 496,00 руб. "
print s.replace(' ','').split(' ')[0]

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #7 : 12 Январь 2012, 16:49:49 »
alexander.pronin,
не сработал, "пробел" после единицы остался... там наверное, что-то не здоровое вообще выходит...

в общем думаю способ andrey_p самый надёжный.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #8 : 13 Январь 2012, 08:14:48 »
У меня работает.
>>> s = "1 496,00 руб. "
>>> print s.replace(' ','').split(' ')[0]
1496,00
>>>

Оффлайн terrible_user

  • Активист
  • *
  • Сообщений: 438
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #9 : 13 Январь 2012, 10:03:37 »
alexander.pronin,
в общем думаю способ andrey_p самый надёжный.

is_mychar(x)чисто так для красоты, что бы не городить свои функции
filter(lambda x: x.isdigit() or x == ',', s)
Бери больше, кидай дальше

Оффлайн thunderamur

  • Автор темы
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6747
  • Ubuntu 16.04
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #10 : 13 Январь 2012, 11:15:46 »
alexander.pronin,
дело в том, что там вообще непонятно что в строке, я показал, что там в исходном виде просто, как это показывает фаербаг, а при парсинге этот   превращается в какую-то бяку видимо)

Пользователь решил продолжить мысль 13 Январь 2012, 11:16:33:
terrible_user,
можешь рассказать, что там делается (filter, lambda)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #11 : 13 Январь 2012, 11:21:29 »
alexander.pronin,
дело в том, что там вообще непонятно что в строке, я показал, что там в исходном виде просто, как это показывает фаербаг, а при парсинге этот   превращается в какую-то бяку видимо)
Этот &nbsp всего лишь non-breaking space, т.е. пробел, по которому нельзя разрывать строку.

terrible_user,
можешь рассказать, что там делается (filter, lambda)
http://docs.python.org/library/functions.html#filter
http://www.secnetix.de/olli/Python/lambda_functions.hawk
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2540
    • Просмотр профиля
Re: Python - выбрать из строки вещественное число
« Ответ #12 : 13 Январь 2012, 13:37:27 »
 
wl уже сказал про Spacebar. Добавлю, что есть еще спецсимволы типа
< - &lt;
> - &gt;
Их так подменяют, чтобы различать границы xml тегов и символы.
Spacebar в xml (не в тексте тега) убирается или сжимается.
ЗЫ. Эта ремарка на всякий случай.
// преобразование xml в текст
function xml2txt(xml) {return xml.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');}
Это код на JS, на питоне практически также будет выглядеть.
« Последнее редактирование: 13 Январь 2012, 13:43:23 от alexander.pronin »

 

Страница сгенерирована за 0.058 секунд. Запросов: 24.