我想使用Python查找和替换某些关键字,同时保留文本文件中的原始间距
因此,我有一个(Fortran)文本文件:
c mat card 4063
m4063 40000.66c 1.296214e+25 $ 1963.563456 g
1001.80c 2.041536e+25 $ 34.170479 g
mt4063 h/zr.10t zr/h.10t
c
c mat card 4064
m4064 40000.66c 1.292081e+25 $ 1957.303433 g
1001.80c 2.035028e+25 $ 34.061540 g
mt4064 h/zr.10t zr/h.10t
c
c mat card 4065
m4065 40000.66c 1.283016e+25 $ 1943.571491 g
1001.80c 2.020751e+25 $ 33.822573 g
mt4065 h/zr.10t zr/h.10t
c
这里是我尝试的Python脚本:
FE_ID = [4064, 4065]
C12_TEMP_DICT = {'10': '40000.66c', '20': '40000.67c', '30': '40000.68c'}
H1_TEMP_DICT = {'10': ' 1001.80c', '20': ' 1001.81c', '30': ' 1001.82c'}
ZRH_TEMP_DICT = {'10': 'zr/h.10t', '20': 'zr/h.20t', '30': 'zr/h.30t'}
HZR_TEMP_DICT = {'10': 'h/zr.10t', '20': 'h/zr.20t', '30': 'h/zr.30t'}
temp = input("Temperature = ")
new_file = open('new_text.i', 'w')
for line in open('matcards.i','r'):
entries = line.split()
if entries[0] != 'c':
if entries[0] in [f'm{f}' for f in FE_ID]:
for entry in entries:
if entry in list(C12_TEMP_DICT.values()):
entry == C12_TEMP_DICT[temp]
elif entry in list(H1_TEMP_DICT.values()):
entry == H1_TEMP_DICT[temp]
line = ' '.join(entries)
elif entries[0] in [f'mt{f}' for f in FE_ID]:
for entry in entries:
if entry in list(ZRH_TEMP_DICT.values()):
entry = ZRH_TEMP_DICT[temp]
if entry in list(HZR_TEMP_DICT.values()):
entry = HZR_TEMP_DICT[temp]
line = ' '.join(entries)
new_file.write(line)
如何在Python脚本中保留原始文件的间距,就像手动“查找并替换”它一样
您可以根据需要使用python的str.ljust函数。它基本上用空格或您指定的其他字符填充字符串
相关问题 更多 >
编程相关推荐