Я пытаюсь записать содержимое файла re.findall в файл. Я пытался
output_file.write (findall(tags_pattern, searchtext))
но я получил ошибку типа. Как преобразовать это в тип, который можно записать в файл?
благодаря
Самый простой способ - JSON-кодировать его. См. Модуль json.
Модуль рассола построен для быстрого хранения структур Python в файле. Это не так портативно, как JSON или какой-то другой формат сериализации, но в зависимости от ваших целей этого может быть достаточно.
Использовать рассол:
import re, pickle
r = re.findall(pattern, text)
with open('results.pkl', 'wb') as resultsfile:
pickle.dump(r, resultsfile)
Чтобы восстановить список, используйте pickle.load
:
with open('results.pkl', 'rb') as resultsfile:
r2 = pickle.load(resultsfile)
Я бы опасался использовать это в производственном коде или когда вам нужно передать результаты re.findall веб-клиенту, но для быстрого тестирования и локального хранилища это, вероятно, самый простой.
re.findall
возвращает список совпадений, найденных в searchtext
для tags_pattern
. Эти совпадения - это просто строки. Самый простой способ преобразовать список строк в одну строку, которая может быть записана в файл, - это вызвать str.join
в строке, представляющей разделитель, который вы хотите вставить между строками в списке. Например, вы можете вызвать '\n'.join(findall(tags_pattern, searchtext))
если вы хотите сохранить каждый матч в своей собственной строке.
у вас есть функция str(res)
и repr(res)
но вы также можете сделать ','.join(res)