Я пытаюсь выполнить string.find('\n') в строке с парой '\n' там (я ищу конец строки). Однако это всегда возвращает -1 и не находит '\n'. Что я делаю неправильно?

1
WolfiG 28 Июн 2019 в 18:13

3 ответа

Лучший ответ

Метод find не поддерживает регулярное выражение. Вам нужен пакет re:

import re
m = re.search('\n', string)

Дополнительную информацию можно найти в документации по Python.

1
zmike 28 Июн 2019 в 15:17

Я предполагаю, что обратные слэши могут быть экранированы, а это означает, что символы новой строки могут фактически быть представлены в виде двух символов: обратный слеш и 'n'.

Чтобы проверить, попробуйте использовать string.find('\\n') и убедитесь, что он все еще возвращает -1.

0
Jamie Syme 28 Июн 2019 в 15:23

Хорошо, поскольку вы не указали строку, давайте примем contents в качестве строки, содержащей пару \n.

Давайте заменим все \n каким-нибудь символом вроде ™, используя

_contents = contents.replace('\n', '™')

Поскольку теперь вы хотите узнать, сколько там концевых строк, вы можете использовать _contents.find('™'). Это вернет нет. линий.

0
Roshan 28 Июн 2019 в 15:35