Случается со мной редко, когда я пытаюсь выполнить поиск с помощью регулярного выражения через pyperclip.paste()
, если в поисковом выражении используется символ новой строки \n
.
Извините, мой английский.
При поиске я делаю это через тройную кавычку, назначенную переменной text
:
import re
text = '''
This as the line 1
This as the line 2
'''
pattern = re.compile(r'\d\n\w+')
result = pattern.findall(text)
print(result)
На самом деле она печатает символ новой строки \n
.Что я хочу, или почти то, что я ожидаю.
»» »['1 \ nThis']
Но проблема начинается, когда приходит строка для поискаиз текста, скопированного из буфера обмена.
This as the line 1
This as the line 2
Скажем, я просто выбираю и копирую в буфер этот текст, и я хочу, чтобы регулярное выражение извлекало из него тот же предыдущий вывод.На этот раз мне нужно использовать модуль pyperclip.
Итак, подделав предыдущий код и напишите вместо этого:
import re, pyperclip
text = pyperclip.paste()
pattern = re.compile(r'\d\n\w+')
result = pattern.findall(text)
print(result)
Вот результат:
»»» []
Ничего, кроме двух скобок.Я обнаружил (в моей неопытности), что проблема, вызывающая это, является \n
символом.И это не имеет никакого отношения к конфликту между питоном (также \ n символом), потому что мы избегаем этого с помощью 'r'.
Я уже нашел не слишком ясное решение для этого (для меня почти, потому чтоя только с основами Python прямо сейчас.)
import re, pyperclip
text = pyperclip.paste()
lines = text.split('\n')
spam = ''
for i in lines:
spam = spam + i
pattern = re.compile(r'\d\r\w+')
result = pattern.findall(spam)
print(result)
Обратите внимание, что вместо \n
для обнаружения новых строк в последнем выражении регулярного выражения, я выбрал \r
(\n
приведет к тому же плохому поведению при печати только скобок).\r
его можно заменить на \s
, выход работает, но:
»» »['1 \ rThis']
С \r
вместо\n
По крайней мере, это была небольшая победа для меня.
Мне очень поможет, если бы вы могли объяснить мне лучшее решение для этого или почти понять, почему это произошло.Вы также можете порекомендовать некоторые концепции для полного понимания этого.