Найти - Пользователи
Полная версия: Преобразование числа с запятой
Начало » Python для новичков » Преобразование числа с запятой
1 2
megafox
Доброе время!
Есть строки с числами 2095,51 209,56 1885,95. Чтобы преобразовать их во float необходимо запятую изменить на точку. Подскажите пожалуйста оптимальное решение. подозреваю, что через format, но так и не понял.
Rodegast
 >>> "2095,51".replace(",", ".")
'2095.51'
megafox
Как можно оптимизировать код в первых трех строках, даже мне глаз режет
a='Абонентская плата L 500 + 1838,71 0,05 1654,84'.split() #будут даны строки, которые нужно отфильтровать по числу в середине, в этом случае '0,05'
b=a[::-1] #начало у строк разное, единственное, что объединяет, это то, что нужное число в предпоследней подстроке.
c=str(b[1]).replace(',','.')#чтобы применить replace для дальнейшего преобразования во float нужно из list перевести в str.
if float(c)!=0:
print('Число')
else:
print('Ноль')
FishHook
[code python]Your code here....[/code]
marvellik
megafox а что вам мешает сразу заменить , на. и уже получить готовые для обработки данные
 >>> a='Абонентская плата L 500 + 1838,71 0,05 1654,84' .replace(',','.').split()
>>> print(a)
['Абонентская', 'плата', 'L', '500', '+', '1838.71', '0.05', '1654.84']
а если вам нужны в списке нужны только числа то можно отфильтровать остальное на стадии его создания
megafox
Очередной привет )
Продолжу здесь, чтобы не спамить.
Задача: есть файл, разделенный на блоки пустой строкой, каждый из них начинается словом “Абонентский номер” и заканчивается “Итого”. Задача пробежаться по строкам и вытащить из них значения, создав второй файл с данными Абонентский номер xxx.
Натолкните на мысль пожалуйста как сделать так, чтобы при нахождении слова Абонентский начиналась обработка блока до слова Итого или пустой строки, происходила запись в файл и начиналась обработка следующего блока.
пример блока:
По услугам в соответствии с тарифным планом “Фирменный Универсальный”
Абонентский номер +7XXXXXXXXXX
Безлимитный внутри сети лайт() 81
Входящие вызовы (Остальные)( мин) 1,15 0
Входящие вызовы (С мобильного)( мин) 84,10 0
Опция Безлимитный интернет( Мб) 167,4
Итого 307,97


vic57
как-то так
 block_begin = "Абонентский номер"
block_end = "Итого"
flag = 0 #1 - блок открыт,2 - блок закрыт
f_name = 'tmp.txt'
tmp = []
with open(f_name) as f:
    for line in f:
        if line.startswith(block_begin): flag = 1
        if line.startswith(block_end): flag = 2
        if flag == 1:
            tmp.append(line)
        if flag == 2:
            tmp.append(line)
            print(tmp)
            tmp = []
            flag = 0
marvellik
я думаю уже блоки сами сможете обработать. как пример блоки отличаются номером:
 with open('test.txt') as fil:
    for i,x in enumerate(' '.join([i.strip() if i !='\n' else '*' for i in fil.readlines()]).split('*')):
        print('блок {}\n'.format(i),x)
блок 0
 Абонентский номер +7XXXXXXXX31 Безлимитный внутри сети лайт() 81 Входящие вызовы (Остальные)( мин) 1,15 0 Входящие вызовы (С мобильного)( мин) 84,10 0 Опция Безлимитный интернет( Мб) 167,4 Итого 307,97 
блок 1
  Абонентский номер +7XXXXXXXX45 Безлимитный внутри сети лайт() 81 Входящие вызовы (Остальные)( мин) 1,15 0 Входящие вызовы (С мобильного)( мин) 84,10 0 Опция Безлимитный интернет( Мб) 167,4 Итого 307,97 
блок 2
  Абонентский номер +7XXXXXXXX55 Безлимитный внутри сети лайт() 81 Входящие вызовы (Остальные)( мин) 1,15 0 Входящие вызовы (С мобильного)( мин) 84,10 0 Опция Безлимитный интернет( Мб) 167,4 Итого 307,97
Vladimirv
marvellik код супер)
doza_and
megafox
Есть строки с числами 2095,51
megafox
Задача: есть файл, разделенный на блоки пустой строкой,
Задачи такого типа возникают когда вы не с того конца пытаетесь автоматизировать процесс.
Наверняка есть база данных из которой получены эти файлы. Во многих случаях проще напрямую из нее данные запросить а не лепить преобразовалки из базы в текст из текста в ваши данные. Иногда по соображениям безопасности вам не дают доступ к базе, но тогда практически наверняка можно выгружать данные в одном из СТАНДАРТНЫХ форматов. Например csv, json. Если выгрузите данные в этих форматах, чтение данных любой сложности станет кодом в одну или две строчки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB