Различное поведение результатов регулярных выражений в Windows и Linux
Я запускаю следующее регулярное выражение для извлечения значений до и после @
символ в строке.
re.search(r'\S+ @ \S+(?=\n)', output).group().split(' @ ')
Пример строки выглядит так:
1
1.1
2.2
2.2.2
20 @ 0xffffffff
SUCCESS
Я протестировал это в консоли Python в обеих средах, и она работает так, как я намереваюсь.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю свои тесты на нос в Windows, я получаю AttributeError: 'NoneType' object has no attribute 'group'
ошибка в этой строке. Однако этого не происходит при запуске тестов на нос в Linux.
1 ответ
Решение
У вас есть проблема, потому что у вас есть \n
как новая строка. В Windows нужно указать \r\n
, Таким образом, для поддержки сред Windows и Linux используйте
r'\S+ @ \S+(?=\r?\n)'
Кроме того, вы должны проверить, есть ли совпадение, прежде чем получить доступ к .group()
,