Straik32423
Авг. 6, 2016 20:37:03
Привет. Допустим, у меня есть файл, в котором записаны какие-то данные о ком-то.
Например, так:
Виктор
Деньги: 2600
и тп
Как я могу извлечь из второй строки только число 2600? То есть, чтобы, например, переменной money присвоить число, записанное после слова “Деньги:”?
terabayt
Авг. 6, 2016 21:54:21
vic57
можно так
так очень плохо
например если будет так:
здесь нужно отталкиваться от формата файла и его size
если размер не большой и если мы знаем в которой строке Деньги, например каждые 3 строки
with open('test.txt') as f:
for l in f.readlines()[::3]:
print f.split(':')[-1].strip()
Straik32423
Авг. 6, 2016 21:58:02
terabayt
Конкретно в моей ситуации тот способ подходит. Но спасибо.
marvellik
Авг. 6, 2016 22:03:33
если конкретно именно вторая строка постоянно то можно так
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
Авг. 6, 2016 23:48:28
terabayt
так очень плохо
ответ был дан на вопрос - извлечь из строки число, а для сложных данных методы естественно другие нужны
doza_and
Авг. 7, 2016 01:57:32
vic57
а для сложных данных методы естественно другие нужны
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
Упрощенный вариант от marvellik
import re
a="asd123"
b=int(re.findall(r"\d+",a)[0])
vic57
Авг. 7, 2016 21:07:38
doza_and
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
я сишник, для меня чем проще, тем лучше. в обработке С-строк все через указатели на элемент массива делается, думаю и в регулярках под капотом примерно то же. ИМХО
py.user.next лучший вариант предложил, я бы только вместо int float поставил бы