Найти - Пользователи
Полная версия: Извлечь цифры из строки, записанной в файле
Начало » Python для новичков » Извлечь цифры из строки, записанной в файле
1
Straik32423
Привет. Допустим, у меня есть файл, в котором записаны какие-то данные о ком-то.

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

Как я могу извлечь из второй строки только число 2600? То есть, чтобы, например, переменной money присвоить число, записанное после слова “Деньги:”?
vic57
 s = 'asdf1234'
tmp = ''
for i in s:
    if i.isdigit(): tmp += i
print int(tmp)
можно так
terabayt
vic57
можно так
так очень плохо
например если будет так:
деньги за 2016 год: 134

здесь нужно отталкиваться от формата файла и его size
если размер не большой и если мы знаем в которой строке Деньги, например каждые 3 строки
 with open('test.txt') as f:
    for l in f.readlines()[::3]:
        print f.split(':')[-1].strip()
Straik32423
terabayt
Конкретно в моей ситуации тот способ подходит. Но спасибо.
Straik32423
vic57
Благодарю
marvellik
если конкретно именно вторая строка постоянно то можно так
 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)
vic57
terabayt
так очень плохо
ответ был дан на вопрос - извлечь из строки число, а для сложных данных методы естественно другие нужны
doza_and
vic57
а для сложных данных методы естественно другие нужны
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.

Упрощенный вариант от marvellik
 import re
a="asd123"
b=int(re.findall(r"\d+",a)[0])
py.user.next
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
>>>
vic57
doza_and
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
я сишник, для меня чем проще, тем лучше. в обработке С-строк все через указатели на элемент массива делается, думаю и в регулярках под капотом примерно то же. ИМХО py.user.next лучший вариант предложил, я бы только вместо int float поставил бы
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