Попробовал такой код:
f = open("log.v2n", "r")
strs = f.readlines()
i = 0
for str in strs:
i+=1
m = re.search("time=([0-9]*.[0-9]*)", str)
if m:
print(m.group(1))
print(i)
frame= 38 fps= 0 q=2.0 size= 11kB time=1.52 bitrate= 57.2kbits/s
f = open("log.v2n", "r")
strs = f.readlines()
i = 0
for str in strs:
i+=1
m = re.search("time=([0-9]*.[0-9]*)", str)
if m:
print(m.group(1))
print(i)
frame= 38 fps= 0 q=2.0 size= 11kB time=1.52 bitrate= 57.2kbits/s
import re
i = 0
p = re.compile(r"time=([0-9]+\.[0-9]+)")
for line in open("log.v2n", "r"):
i+=1
m = p.search(line)
if m:
print(m.group(1))
print(i)
NikСтранно, под Windows код работает как надо, а в Linux так же, как и в моем случае, только первое значение выводится.
1. Идентификатор str является специальным. Не стоит его переопределять!
2. Точка в регулярном выражении обозначает любой символ кроме \n. Его нужно экранировать.
3. Компилировать шаблон на каждой итерации цикла не есть хорошо.import re
i = 0
p = re.compile(r"time=([0-9]+\.[0-9]+)")
for line in open("log.v2n", "r"):
i+=1
m = p.search(line)
if m:
print(m.group(1))
print(i)
for line in open("log.v2n", "r", encoding="cp1251", errors="ignore"):
Кстати, а разве Python 3 по-умолчанию не использует Unicode?Использует. Но данные из файла нужно преобразовать в Unicode. Для этого нужно знать кодировку файла. Кодировка файла по умолчанию соответствует кодировке в системе. В Windows и Linux кодировки системы разные. Чтобы работало везде одинаково следует указать кодировку файла явным образом.