Форум сайта python.su
Привет. Допустим, у меня есть файл, в котором записаны какие-то данные о ком-то.
Например, так:
Виктор
Деньги: 2600
и тп
Как я могу извлечь из второй строки только число 2600? То есть, чтобы, например, переменной money присвоить число, записанное после слова “Деньги:”?
Офлайн
s = 'asdf1234' tmp = '' for i in s: if i.isdigit(): tmp += i print int(tmp)
Отредактировано vic57 (Авг. 6, 2016 21:32:23)
Офлайн
vic57так очень плохо
можно так
деньги за 2016 год: 134
with open('test.txt') as f: for l in f.readlines()[::3]: print f.split(':')[-1].strip()
Офлайн
terabaytКонкретно в моей ситуации тот способ подходит. Но спасибо.
Офлайн
vic57Благодарю
Офлайн
если конкретно именно вторая строка постоянно то можно так
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)
Офлайн
terabaytответ был дан на вопрос - извлечь из строки число, а для сложных данных методы естественно другие нужны
так очень плохо
Офлайн
vic57Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
а для сложных данных методы естественно другие нужны
import re a="asd123" b=int(re.findall(r"\d+",a)[0])
Отредактировано doza_and (Авг. 7, 2016 02:02:09)
Офлайн
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 >>>
Офлайн
doza_andя сишник, для меня чем проще, тем лучше. в обработке С-строк все через указатели на элемент массива делается, думаю и в регулярках под капотом примерно то же. ИМХО py.user.next лучший вариант предложил, я бы только вместо int float поставил бы
Ну и для простых случаев есть методы покороче и которые легче обобщаются в сложных случаях.
Отредактировано vic57 (Авг. 7, 2016 21:14:48)
Офлайн