Найти строку для изменения в текстовом файле по условиям для строк перед ней - PullRequest
1 голос
/ 06 апреля 2020

Есть ли способ в python найти и изменить строку в текстовом файле, для которой строки над ним удовлетворяют определенным условиям? В частности, рассмотрим текстовый файл, который выглядит следующим образом:

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           uniform (0 0.6 0); 
    }
    outlet
    {
        type            inletOutlet;
        inletValue      uniform (0 0 0);
        value           uniform (0 0 0);
    }
}

В этом файле я, например, хотел бы изменить строку, содержащую value uniform (0 0.6 0);. Условием будет то, что это строка, которая находится внутри boundaryField и внутри inlet и начинается (после удаления начальных пробелов) с value.

Каков наилучший способ получить индекс строки эту строку, чтобы изменить его?

1 Ответ

1 голос
/ 06 апреля 2020

Это похоже на совместимость с токенизацией Python, так что вы можете просто использовать tokenize.generate_tokens, затем псевдопарсировать поток токенов и извлечь номер строки из соответствующих токенов, как только вы найдете то, что искали .

Более сложным, но более безопасным подходом было бы создать полноценный синтаксический анализатор, разобрать его на Python структуры, обновить его в памяти, а затем записать обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...