替换一行中文本的特定部分 - python
Replace a certain part of a text in a line - python
我有一个 .wbjn 文件(ANSYS workbench 日志文件),这是一个 python 文件,我必须在其中替换某些变量。例如
parameter_1 = variable_1
parameter_2 = variable_2
.
.
parameter_n = variable_n
我必须用值列表替换 variables_1..n。
所以我创建了一个映射字典并对其进行迭代以替换值。但是这些值并没有被我写的代码所取代;
map_dict = {'variable_1':'20','variable_2':'15'}
handle = open("filename.wbjn","r+")
for l in handle:
for k,v in map_dict.items():
l = l.replace(k,str(v))
handle.write(l)
handle.close()
该文件还有其他几行不需要修改。这里有什么问题,我该如何解决。
谢谢
您可以使用 fileinput
包来编辑文件 in-place
。请找到您可以试验的草稿:
示例file.txt:
parameter_1 = variable_1
parameter_n = variable_n
parameter_4 = variable_4
parameter_k = variable_k
脚本
from fileinput import FileInput
map_dict = {'variable_1': '20', 'variable_4': '15'}
with FileInput('file.txt', inplace=True) as file:
for line in file:
line = line.strip()
parts = line.split('=')
parameter = parts[0].strip()
variable = parts[1].strip()
if variable in map_dict:
print(f"{parameter} = {map_dict[variable]}")
else:
print(line)
file.txt执行后
parameter_1 = 20
parameter_k = variable_n
parameter_4 = 15
parameter_k = variable_k
请注意,print
函数不会显示在脚本输出中,而是将行写入文件。
看起来,已经读完第一行,它跳到文件的末尾写入,之后就没有其他行了。我的不是最优雅的解决方案,但它有效:
map_dict = {"variable_1": "20", "variable_2": "15"}
handle = open("filename.wbjn", "r+")
processed = []
for l in handle:
for k, v in map_dict.items():
l = l.replace(k, str(v))
processed.append(l)
handle.seek(0)
handle.write("".join(processed))
handle.truncate()
handle.close()
我有一个 .wbjn 文件(ANSYS workbench 日志文件),这是一个 python 文件,我必须在其中替换某些变量。例如
parameter_1 = variable_1
parameter_2 = variable_2
.
.
parameter_n = variable_n
我必须用值列表替换 variables_1..n。
所以我创建了一个映射字典并对其进行迭代以替换值。但是这些值并没有被我写的代码所取代;
map_dict = {'variable_1':'20','variable_2':'15'}
handle = open("filename.wbjn","r+")
for l in handle:
for k,v in map_dict.items():
l = l.replace(k,str(v))
handle.write(l)
handle.close()
该文件还有其他几行不需要修改。这里有什么问题,我该如何解决。
谢谢
您可以使用 fileinput
包来编辑文件 in-place
。请找到您可以试验的草稿:
示例file.txt:
parameter_1 = variable_1
parameter_n = variable_n
parameter_4 = variable_4
parameter_k = variable_k
脚本
from fileinput import FileInput
map_dict = {'variable_1': '20', 'variable_4': '15'}
with FileInput('file.txt', inplace=True) as file:
for line in file:
line = line.strip()
parts = line.split('=')
parameter = parts[0].strip()
variable = parts[1].strip()
if variable in map_dict:
print(f"{parameter} = {map_dict[variable]}")
else:
print(line)
file.txt执行后
parameter_1 = 20
parameter_k = variable_n
parameter_4 = 15
parameter_k = variable_k
请注意,print
函数不会显示在脚本输出中,而是将行写入文件。
看起来,已经读完第一行,它跳到文件的末尾写入,之后就没有其他行了。我的不是最优雅的解决方案,但它有效:
map_dict = {"variable_1": "20", "variable_2": "15"}
handle = open("filename.wbjn", "r+")
processed = []
for l in handle:
for k, v in map_dict.items():
l = l.replace(k, str(v))
processed.append(l)
handle.seek(0)
handle.write("".join(processed))
handle.truncate()
handle.close()