LINUX.ORG.RU

Парсинг файла питон

 


0

1

Есть файл в нем куча текста , но там встречаются например такие значения $50 &10 мне нужно как то на питон найти и ввести все эти значения , например есть такой текст :

текст текст &10 wfekferkferkf

вывести : &10 или просто 10 не важно ,как такое сделать ?



Последнее исправление: echo_ (всего исправлений: 1)

«$50 &10» — это два значения? Надо «найти» когда есть любое из них? Если да, тогда вот. Если нет, тогда сформулируй нормально, что именно надо «найти».

Psych218 ★★★★★
()
Ответ на: комментарий от deep-purple

читал

не могу никак понять просто , сделал был че то такое :


import re
red=open('log.txt','r').read()
f = re.findall('& (.*)', red)
a = f[0]
print(a)
но оно выводит только 1-ый пример , при попытке вставить такое чудо в цикл , выдает ошибку

echo_
() автор топика
Ответ на: читал от echo_

Какую ошибку? И какой был цикл? По строкам (readlines(), или после read() — splitlines()) или иначе как-то?

Psych218 ★★★★★
()
Ответ на: комментарий от Psych218

сделал так , и почему то думал что это сработает , но увы че то не то

import re
for line in open('log.txt','r'):
    f = re.findall('& (.*)', line)
    a = f[0]
    print(a)
echo_
() автор топика
Ответ на: комментарий от Dred

есть такая вероятность

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

echo_
() автор топика
Ответ на: есть такая вероятность от echo_

Если ты не будешь вчитываться то в следующий раз прибежишь сюда опять с простой задачей. Вчитывайся. Даже если ты скажешь что оно тебе не понадобится. Понадобится, поверь.

deep-purple ★★★★★
()

сделал так , и почему то думал что это сработает , но увы че то не то

Выше уже дали более правильный способ. Но именно так как хотел через цикл будет примерно вот так:

with open('log.txt', 'r') as f:
    lines = f.readlines()

for line in lines:
    f = re.findall('& (.*)', line)
    a = f[0]
    print(a)

либо:

with open('log.txt', 'r') as log:
    for line in log:
        line = log.readline()
        f = re.findall('& (.*)', line)
        a = f[0]
        print(a)

Только это… У тебя в примере-то &10, а в регэакспе после & стоит пробел. Может вообщее в этом дело, и просто вместо '& (.*)' надо '&[0-9]*'?

Psych218 ★★★★★
()
import re; [print(*re.findall(r'[$&](\d+)', l)) for l in open('log.txt')]
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.