У меня проблемы с извлечением фрагментов текста из текстового файла.Используя python 3, у меня есть формат ниже по всему текстовому файлу:
integer stringOfFilePathandName.cpp string integer
...not needed text...
...not needed text...
singleInteger( zero or one)
---------------------------------
integer stringOfFilePathandName2.cpp string integer
...not needed text...
...not needed text...
singleInteger( zero or one)
---------------------------------
Количество нежелательных текстовых строк не является стабильным для каждого экземпляра шаблона. Мне нужно сохранить значение stringOfFilePathandName.cpp и singleInteger , если это возможно, в словарь, например {stringOfFilePathandName: (0 или 1)} .
Текст содержит другие расширения файлов (например, .cpp), которые мне не нужны.Кроме того, я не знаю кодировку файла, поэтому я читаю его как двоичный файл.
Моя проблема имеет общие особенности с проблемами, указанными по ссылкам ниже:
Python читает файл до совпадениячитать до следующего шаблона
https://sopython.com/canon/92/extract-text-from-a-file-between-two-markers/ - который я не совсем понимаю
python - чтение файла из и в определенные строки текста - это я пытался скопировать, но работал только для одного экземпляра.Мне нужно повторить этот процесс по всему файлу.
В настоящее время я пробовал это, который работает для одного случая:
fileRegex = re.compile(r".*\.cpp")
with open('txfile',"rb") as fin:
filename = None
for line in input_data:
if re.search(fileRegex,str(line)):
filename = ((re.search(fileRegex,str(line))).group()).lstrip("b'")
break
for line in input_data:
if (str(line).lstrip("b'").rstrip("\\n'"))=="0" or (str(line).lstrip("b'").rstrip("\\n'"))=="1":
dictOfFiles[filename] = (str(line).lstrip("b'").rstrip("\\n'"))
del filename
Я думаю, что аналогичный процесс, который повторяется в файленеобходимо.До сих пор подход, которым я следовал, был построчным.Возможно, было бы лучше просто сохранить весь текст в переменной, а затем извлечь.Любые мысли, добро пожаловать, это беспокоило меня довольно долгое время ...
за запрос вот текстовый файл: https://raw.githubusercontent.com/CGCL-codes/VulDeePecker/master/CWE-119/CGD/cwe119_cgd.txt