Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 6, 2016 20:37:03

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

Привет. Допустим, у меня есть файл, в котором записаны какие-то данные о ком-то.

Например, так:
Виктор
Деньги: 2600
и тп

Как я могу извлечь из второй строки только число 2600? То есть, чтобы, например, переменной money присвоить число, записанное после слова “Деньги:”?

Офлайн

#2 Авг. 6, 2016 21:30:39

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Извлечь цифры из строки, записанной в файле

 s = 'asdf1234'
tmp = ''
for i in s:
    if i.isdigit(): tmp += i
print int(tmp)
можно так

Отредактировано vic57 (Авг. 6, 2016 21:32:23)

Офлайн

#3 Авг. 6, 2016 21:54:21

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

vic57
можно так
так очень плохо
например если будет так:
деньги за 2016 год: 134

здесь нужно отталкиваться от формата файла и его size
если размер не большой и если мы знаем в которой строке Деньги, например каждые 3 строки
 with open('test.txt') as f:
    for l in f.readlines()[::3]:
        print f.split(':')[-1].strip()



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Авг. 6, 2016 21:58:02

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

terabayt
Конкретно в моей ситуации тот способ подходит. Но спасибо.

Офлайн

#5 Авг. 6, 2016 21:58:20

Straik32423
От: Ростов-на-Дону, Россия
Зарегистрирован: 2016-05-18
Сообщения: 46
Репутация: +  0  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

vic57
Благодарю

Офлайн

#6 Авг. 6, 2016 22:03:33

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

если конкретно именно вторая строка постоянно то можно так

 import re
with open('name.txt') as file:
    lis_t = [ i.strip() for i in file.readlines() ]
res = ''.join(re.findall(r'\d',lis_t [1]))
print (res)

Офлайн

#7 Авг. 6, 2016 23:48:28

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Извлечь цифры из строки, записанной в файле

terabayt
так очень плохо
ответ был дан на вопрос - извлечь из строки число, а для сложных данных методы естественно другие нужны

Офлайн

#8 Авг. 7, 2016 01:57:32

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

vic57
а для сложных данных методы естественно другие нужны
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.

Упрощенный вариант от marvellik
 import re
a="asd123"
b=int(re.findall(r"\d+",a)[0])



Отредактировано doza_and (Авг. 7, 2016 02:02:09)

Офлайн

#9 Авг. 7, 2016 03:47:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Извлечь цифры из строки, записанной в файле

file.txt

Виктор 1
Деньги: 2600

Виктор 2
Деньги: 2500

  
>>> with open('file.txt', encoding='utf-8') as fin:
...     for line in fin:
...         if line.startswith('Деньги:'):
...             money = int(line.split()[1])
...             break
... 
>>> print(money)
2600
>>>



Офлайн

#10 Авг. 7, 2016 21:07:38

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Извлечь цифры из строки, записанной в файле

doza_and
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
я сишник, для меня чем проще, тем лучше. в обработке С-строк все через указатели на элемент массива делается, думаю и в регулярках под капотом примерно то же. ИМХО py.user.next лучший вариант предложил, я бы только вместо int float поставил бы

Отредактировано vic57 (Авг. 7, 2016 21:14:48)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version