Регулярное выражение работает со строками, но не с вводом из файлов в Python. ⇐ Python

Программы на Python
Anonymous
Регулярное выражение работает со строками, но не с вводом из файлов в Python.

Сообщение Anonymous »

Я пытаюсь прочитать ключ и идентификатор из файла .txt следующего содержания:

Код: Выделить всё

Wiederherstellungsschlüssel für die BitLocker-Laufwerkverschlüsselung

Um zu überprüfen, ob es sich um den richtigen Wiederherstellungsschlüssel handelt, vergleichen Sie den Beginn des folgenden Bezeichners mit dem auf dem PC angezeigten Bezeichnerwert.

Bezeichner:

F85E6660-52A8-43D9-B66Z-F61246666666

Falls der obige Bezeichner mit dem auf dem PC angezeigten Bezeichner übereinstimmt, sollten Sie den folgenden Schlüssel zum Entsperren des Laufwerks verwenden.

Wiederherstellungsschlüssel:

222222-333333-444444-555555-666666-777777-888888-999999

Falls der obige Bezeichner nicht mit dem auf dem PC angezeigten Bezeichner übereinstimmt, handelt es sich nicht um den richtigen Schlüssel zum Entsperren des Laufwerks.
Versuchen Sie es mit einem anderen Wiederherstellungsschlüssel, oder suchen Sie unter "https://go.microsoft.com/fwlink/?LinkID=260589" nach weiteren Informationen.
При использовании регулярного выражения:

Код: Выделить всё

identifier_pattern = r"[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}"
key_pattern = r"[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}"
Это работает, когда я сохраняю текст в многострочных или однострочных строках, но не при чтении файла.
Я попробовал read() и повторение ввод построчно или удаление переносов строк и табуляции, но это тоже не работает.

Код: Выделить всё

#Example use
import re

identifier_pattern = r"[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}"

single_line = " F85E6660-52A8-43D9-B66Z-F61246666666"
# Works
print(re.search(identifier_pattern,single_line))

# Doesn't work
with open("testKey.txt") as file:
for line in file:
line_clear = line.replace('\r',' ').replace('\n' , ' ').replace('\t' , ' ')
match = re.search(identifier_pattern,line_clear)
print("match: ", match , "line: ",line_clear)

# Doesn't work
def extract_bitlocker_info(file_path):
with open(file_path, 'r') as file:
content = file.read()

identifier_pattern = r"[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}"
identifier = re.search(identifier_pattern, content)

recovery_key_pattern = r"[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}-[0-9]{6}"
recovery_key = re.search(recovery_key_pattern, content)

return identifier, recovery_key
В чем причина того, что регулярные выражения не работают с входными данными из .txt-файлов?
РЕДАКТИРОВАТЬ: Под «Не работает» я подразумеваю, что re.search() возвращает None.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»