我的文件中有很多数据,其中包含一些行
*PART, NAME=Part-Default
**
*NODE, NSET=ALLNODES
1, -175.443970, -165.165787
2, -175.143875, -161.285782
3, -171.282181, -163.266525
...
...
...
**
*ELEMENT, TYPE=CPE4R, ELSET=EB2
1, 3, 2, 1, 4
2, 6, 5, 2, 3
我想替换
之间的文字* NODE,NSET = ALLNODES以及**之后的第一次出现**来自另一个具有表格数据的文件,即只用逗号分隔的数字!
1, -75.443970, -15.165787
2, -75.143875, -11.285782
3, -71.282181, -13.266525
我可以使用简单的命令
读取另一个文件的所有行file=open(fileName,'r')
for lines in file:
但无法弄清楚替换方法。有什么建议吗?
答案 0 :(得分:1)
将文件内容读入字符串。
with open('your_file', 'r') as f:
contents = f.read()
在两次出现之间获取文字。
starting_text = 'whatever your first bound is'
ending_text = 'whatever your second bound is'
to_replace = contents[contents.find(starting_text)+len(starting_text):contents.rfind(ending_text)]
然后更换它。
contents = contents.replace(to_replace, 'whatever you want to replace it with')
然后你可以将它重写回文件。
您可以使用相同的方法查找您将要替换的文本,如果它在另一个文件中。
(这不是按照方式编制的,因此可能不完全正确)
答案 1 :(得分:0)
# if your input file is large, process it line by line:
infh=open('NameOfFileWithLotsOfData','r')
outfh=open('NameOfOutputFile','w')
flag_replacing=False
while True:
line = infh.readline()
if not flag_replacing:
# only write out the line if not reading between *NODE and ** lines
outfh.write(line)
if line.startswith('*NODE'):
flag_replacing=True
if line.startswith('**'):
if flag_replacing:
# this is the time to insert the other file
insertfh=open('FileToInsert','r')
outfh.write(insertfh.read())
flag_replacing=False