Заменить определенные символы в потоке

У меня есть метод (парсер .yml), который принимает входной поток как вход. Проблема заключается в том, что он выдает ошибки, когда сталкивается с определенными символами в определенных местах, например, % .

То, что я хотел бы сделать, это взять поток, заменить все % владельцем места и передать его парсеру.

Это то, что у меня есть (что не работает с текущим вводом):

  stream = open('file.yml', 'r') dict = yaml.safe_load(stream) 

Но мне кажется, что мне нужно что-то вроде:

  stream = open('file.yml', 'r') temp_string = stringFromString(stream) #convert stream to string temp_string.replace('%', '_PLACEHOLDER_') #replace with place holder stream = streamFromString(temp_String) #conver back to stream dict = yaml.safe_load(stream) 

One Solution collect form web for “Заменить определенные символы в потоке”

Хорошим способом сделать это было бы написать генератор, таким образом он останется ленивым (весь файл не нужно читать сразу):

 def replace_iter(iterable, search, replace): for value in iterable: value.replace(search, replace) yield value with open("file.yml", "r") as file: iterable = replace_iter(file, "%", "_PLACEHOLDER") dictionary = yaml.safe_load(iterable) 

Обратите внимание на использование оператора with для открытия файла – это лучший способ открыть файлы на Python, так как он обеспечивает правильное закрытие файлов, даже когда происходят исключения.

Также обратите внимание, что dict – это плохое имя переменной, так как оно разбивает встроенный dict() и останавливает вас от его использования.

Обратите внимание, что ваша stringFromStream() по существу является file.read() , а steamFromString()data.splitlines() . То, что вы называете «потоком», на самом деле является просто итератором по строкам (строки файла).

  • Как воспроизводить видео из Интернета, как youtube в kivy
  • быстрый способ чтения из StringIO до появления некоторого байта
  • Pandas, производительность по нескольким статистикам прокатки по разным временным интервалам
  • Исправляемый поток регулярного выражения Python
  • Захват stdout в рамках одного процесса в Python
  • Добавьте предварительную обработку Tensorflow к существующей модели Keras (для использования в Tensorflow Serving)
  • Просмотр потока h264 поверх TCP
  • Tensorflow: Эффективное перемещение / перенос данных на GPU
  • Переназначение конечного слоя InceptionV4 для новых категорий: локальная переменная не инициализирована
  • Отображать данные, передаваемые из флага, при обновлении
  • pyPdf для извлечения IndirectObject
  • Python - лучший язык программирования в мире.