python - 在字符串匹配后将行插入文件

标签 python python-2.7

我正在尝试在文件的行内搜索子字符串,并在找到的行之后立即插入相似的行。尽管有使用 fileinput 方法的类似解决方案,但我不知道如何在我的案例中使用它。

这是我尝试过的:

list = ["abc", "pqr", "xyz"]

inputfile = open (somefile.txt, 'a+')
for line in <inputfile>:    
    if 'stringstosearch' in line:
       for <item> in list:
               new_line = "new_line with %s" %(item)        
               inputfile.write(new_line + "\n") 
    break
inputfile.close()

例如,如果文本文件是:

Torquent scelerisque aptent hac rhoncus vel
Turpis vestibulum tellus laoreet mollis conubia facilisis tempor nec semper
In mi mauris etiam quisque sem congue est velit lacus convallis amet ante ad
Integer maecenas semper quisque nisi hendrerit, libero feugiat cursus euismod accumsan
Dui sed magna vivamus augue ac quisque ac mauris torquent eros taciti
Conubia curae vel himenaeos dictumst sed at

string to search = "mauris etiam quisque"
list = ["abc", "pqr", "xyz" ]

文件写入后的预期输出:

Torquent scelerisque aptent hac rhoncus vel
Turpis vestibulum tellus laoreet mollis conubia facilisis tempor nec semper
In mi mauris etiam quisque sem congue est velit lacus convallis amet ante ad
new_line with abc
new_line with pqr
new_line with xyz
Integer maecenas semper quisque nisi hendrerit, libero feugiat cursus euismod accumsan
Dui sed magna vivamus augue ac quisque ac mauris torquent eros taciti
Conubia curae vel himenaeos dictumst sed at

最佳答案

你不能只插入文件中间,所以对于小文件,首先要完整地读取文件。然后以写入模式打开同一个文件,并在找到字符串时追加。

list = ["abc", "pqr", "xyz"]

inputfile = open('somefile.txt', 'r').readlines()
write_file = open('somefile.txt','w')
for line in inputfile:
    write_file.write(line)
    if 'stringstosearch' in line:
       for item in list:
            new_line = "new_line with %s" %(item)        
            write_file.write(new_line + "\n") 
write_file.close()

关于python - 在字符串匹配后将行插入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26619613/

相关文章:

python - 如何按值对列表进行分组?

python - 为什么在 Tensorflow 中使用和不使用上下文管理器定义 tf.Session 会导致不同的行为?

python - 如何迭代包含字符串列表的 pandas 行以检查每个单词是否为英文?

python - 如果存在打印语句,Pycharm 会无限期地挂起单元测试

python - 没有名为 sh 的模块

python - 为什么这个多线程 python 程序可以正确打印 0 到 99?

python - 使用 Python 与正在运行的控制台应用程序交互

python - python 是否缓存或重新计算 while 循环操作上的函数调用

python - Linux USB 映射问题

python-2.7 - 木星|内核似乎已经死了。它将自动重启 |