Это для сценария, который предварительно обрабатывает входные файлы CFD на сервере для отправки заданий.В настоящее время у меня есть код Python для этого, но один файл, который мне нужно изменить, вызывает у меня проблемы.
Файл представляет собой файл данных с двумя столбцами, разделенный пробелами:
HEADER X
HEADER Y
-400,0 1
-320,0 0,1
-280,0 0,01
0,0 0,001
бла-бла-бла остальные файлы
Меня интересует только поиск и изменение строки «0.0» на что-то новое, например, «2.0», «-1.0» или «3.0»,или что угодно.Код, который у меня сейчас есть, уже знает, что «0.0» - это интересующая строка, и ищет ее в файлах и заменяет ее другим номером.Это было успешно сделано в других входных файлах CFD.
Однако в этом конкретном файле, поскольку нет алфавитных строк, которые я мог бы использовать для ключевых слов для перехода, я должен искать вхождения «0.0»,И проблема в том, что мой код в настоящее время заменяет первые вхождения «0.0», скажем, «1.0».Таким образом, код становится:
HEADER X
HEADER Y
-400,0 1
1.0 0,1
-280.0 0,01
0.0 0,001
бла-бла-бла, остальная часть файла
Код, который я сейчас использую:
with open('file.in','r') as file:
for line in file:
if '-400.0' in line: # jump to first instance of "-400.0"
for line in file:
if str(spk) in line: # in this case, spk = 0.0
orispkline = line #save the line with "0.0"
newspkline = line.replace(str(line.split([0]),str(newspk)) # replace "0.0" with "1.0"
break # jump out of the loop as the job is done
file.seek(0) # go back to start of file:
filedata = file.read() # read the file again
filedata = filedata.replace(str(orispkline),str(newspkline)) # replace the old line with the updated line
with open('file.in','w') as file:
file.write(filedata) # write the file
Итак, что происходит,что он видит «0.0» в «-320.0» и просто заменяет его.Я хотел бы, чтобы код проходил построчно, находил «0.0», который появляется сам по себе и находится в начале строки, и заменяет его на желаемое число.
Я знаю коддействительно круговой и может быть оптимизирован, но он работает со всеми остальными файлами, и я хочу сделать вещи простыми и последовательными.
Примечание: строка для поиска не всегда "0.0", ноугол поворота коленчатого вала «0.0» всегда доставляет мне больше всего хлопот.
Спасибо всем за помощь!