Как заменить только определенные символы в нескольких файлах?Python

Программы на Python
Anonymous
Как заменить только определенные символы в нескольких файлах?

Сообщение Anonymous »

У меня есть проект по замене определенных символов в сотнях файлов с использованием Python (я предпочитаю язык, но на самом деле это может быть что угодно). Я хочу иметь возможность запустить этот сценарий и отправить измененные файлы в новое место. Пытаюсь полностью автоматизировать этот процесс, поскольку не могу рассчитывать на то, что смогу сделать это вручную. Бонусные баллы, если скрипт может автоматически выполняться всякий раз, когда я перетаскиваю файлы в папку (не уверен в осуществимости этого, я очень невежественен в этой области).
Цель: чтобы изменить символы «u» справа от пронумерованных значений (см. второй столбец ниже; например, «114.30u») как «o». Однако если после строки начинается буква «o» или «u», то символом должна быть «s» (см. первый столбец ниже). Файлы могут состоять из 10-100 строк в зависимости от того, как они созданы. Однако все они придерживаются одного и того же формата строк, приведенного ниже, только корректируя значения и перемещая блоки кода (BO, AK, SI и т. д.).
Пример текста в файле .nc1 (заголовок не показан):

Код: Выделить всё

BO
o   114.30u    78.61  11.11   0.00
o  1212.85u    78.61  11.11   0.00
o   381.00u    78.61  11.11   0.00
SI
h   63.50u   63.50  0.00  25rX.0000005-B12
AK
o     0.00u   100.84   0.00
o  1327.15u   100.84   0.00
o  1327.15u     0.00   0.00
o     0.00u     0.00   0.00
o     0.00u   100.84   0.00
AK
u  1327.15u   100.84   0.00
u     0.00u   100.84   0.00
u     0.00u     0.00   0.00
u  1327.15u     0.00   0.00
u  1327.15u   100.84   0.00
PU
v   133.35u   136.91  0.00
v   133.35u    60.71  0.00
EN
Я сделал все возможное, чтобы создать прототип, используя свои ограниченные знания и Интернет, но это неправильно:

Код: Выделить всё

initialCode = []

with open ("filepath\\file.nc1", "r") as reader:
for line in reader.readlines():
initialCode.append(line)

WebHoles = []
NewCode = []

for chars in initialCode:
whatWeNeed = chars.replace("u","o")
WebHoles.append(whatWeNeed)

for chars in WebHoles:
whatWeNeed = chars.replace("\n","")
NewCode.append(whatWeNeed)

with open ("filepath\\file [OPTIMIZED].nc1", "w") as writer:
for i in NewCode:
writer.write(i)
writer.write("\n")
У меня возникли проблемы с написанием условного форматирования для изменения только второго столбца, поэтому оно не включено. Кроме того, мой скрипт ищет только один файл с именем, а не файловый каталог, чтобы просмотреть сотни файлов за одно выполнение, так что это еще один недостающий элемент с моей стороны.
Вот ожидаемый результат из исходного примера выше (заголовок не показан):

Код: Выделить всё

BO
o   114.30s    78.61  11.11   0.00
o  1212.85s    78.61  11.11   0.00
o   381.00s    78.61  11.11   0.00
SI
h   63.50o   63.50  0.00  25rX.0000001-B12
AK
o     0.00s   100.84   0.00
o  1327.15s   100.84   0.00
o  1327.15s     0.00   0.00
o     0.00s     0.00   0.00
o     0.00s   100.84   0.00
AK
u  1327.15s   100.84   0.00
u     0.00s   100.84   0.00
u     0.00s     0.00   0.00
u  1327.15s     0.00   0.00
u  1327.15s   100.84   0.00
PU
v   133.35o   136.91  0.00
v   133.35o    60.71  0.00
EN
Хотя мне бы хотелось, чтобы исходный формат остался неизменным, я считаю, что пока между элементами в каждой строке есть пробелы и они остаются на своих соответствующих строках, дополнительные пробелы могут быть добавлены или удалены, и они не повлияют на работу файлов.
Любая помощь по этому вопросу будет принята с благодарностью. Прошу прощения, что я не продвинулся в этом вопросе, так как я на самом деле не программист.

Подробнее здесь: https://stackoverflow.com/questions/785 ... iple-files

Вернуться в «Python»