使用python替换另一个文本文件中两个字符串之间的文件中的文本

时间:2017-01-17 16:51:47

标签: python string text replace

我的文件中有很多数据,其中包含一些行

*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:

但无法弄清楚替换方法。有什么建议吗?

2 个答案:

答案 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