python3 - неожиданное поведение re.findall
От: ioctl  
Дата: 26.11.20 08:58
Оценка:
# если использовать при токенизации \d+ - все ОК
re.findall(r'[()+\-*/]|\d+', '12*(15+5*2)/3+(6/2+8)')
['12', '*', '(', '15', '+', '5', '*', '2', ')', '/', '3', '+', '(', '6', '/', '2', '+', '8', ')']
# если использовать при токенизации (\d+) - пропадают операции
re.findall(r'[()+\-*/]|(\d+)', '12*(5+5*2)/3+(6/2+8)')
['12', '', '', '5', '', '5', '', '2', '', '', '3', '', '', '6', '', '2', '', '8', '']
Отредактировано 26.11.2020 9:54 ioctl . Предыдущая версия .
Re: python3 - неожиданное поведение re.findall
От: Зверёк Украина https://zverok.github.io
Дата: 26.11.20 10:10
Оценка: 3 (1) +1
I>
I># если использовать при токенизации (\d+) - пропадают операции
I>re.findall(r'[()+\-*/]|(\d+)', '12*(5+5*2)/3+(6/2+8)')
I>['12', '', '', '5', '', '5', '', '2', '', '', '3', '', '', '6', '', '2', '', '8', '']
I>


> If one or more groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group. доки re.findall


Если нужны и операции тоже, нужно и их в группу положить.
Re: python3 - неожиданное поведение re.findall
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.11.20 10:28
Оценка:
Здравствуйте, ioctl, Вы писали:

Какой именно python3? Там шли заметные изменения в движке. И есть ещё такое замечание:

Note

Due to the limitation of the current implementation the character following an empty match is not included in a next match, so findall(r'^|\w+', 'two words') returns ['', 'wo', 'words'] (note missed “t”). This is changed in Python 3.7.

The God is real, unless declared integer.
Re[2]: python3 - неожиданное поведение re.findall
От: ioctl  
Дата: 26.11.20 11:01
Оценка:
Здравствуйте, netch80, Вы писали:

N>Какой именно python3? Там шли заметные изменения в движке. И есть ещё такое замечание:


Python 3.5.2 (default, Oct 7 2020, 17:19:02)
[GCC 5.4.0 20160609] on linux
Re[3]: python3 - неожиданное поведение re.findall
От: Ватакуси Россия  
Дата: 26.11.20 13:15
Оценка:
N>>Какой именно python3? Там шли заметные изменения в движке. И есть ещё такое замечание:

I>Python 3.5.2 (default, Oct 7 2020, 17:19:02)

I>[GCC 5.4.0 20160609] on linux

Попробуй 3.8 или 3.9
Все будет Украина!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.