我是python的新手,我在创建脚本时遇到了一些麻烦。我有一个这样的文本文件(简化):
Not of interest
Not of interest
-object[bla bla
-bla bla
-bla bla
Not of interest
Not of interest
1)我想提取包含“ - ”的所有行。我用
做到了import sys
Input=open(sys.argv[1],'r')
Lines=open('Line', 'w')
with Input as file:
for line in Input:
if '-' in line:
Lines.write(line)
Input.close()
Lines.close()
获取此
-object[bla bla
-bla bla
-bla bla
2)在提取的所有行中,将“[”替换为“\ n-”。我用
做到了import sys, re
Input=open(sys.argv[1],'r')
with Input as file:
Output = Input.read()
Output = Output.replace('[', '\n-')
with open('Output', 'w') as file:
file.write(Output)
获取此
-object
-bla bla
-bla bla
-bla bla
3)如何将这两个脚本的所有段落合并为一个?
提前感谢提前为您提供帮助
答案 0 :(得分:0)
with open("input.txt", "r") as inputFile, open("output.txt", "w") as outputFile:
for line in inputFile:
if "-" in line:
outputFile.write(line.replace('[', "\n-"))
为了测试这一点,我不得不将输入文件更改为更有趣:
<强> input.txt中强>
Not of interest
-object[bla bla
-no square brackets here
there's one [ here-
Not of interest
-and a trailing one here[
-there's-[-two-[-here-
hats[[[!
-I think the [expected input is [more like this
输出如下:
<强> output.txt的强>
-object
-bla bla
-no square brackets here there's one
- here-
-and a trailing one here
-
-there's-
--two-
--here-
-I think the
-expected input is
-more like this
这很简单,但让我们分解一下:
with open("input.txt", "r") as inputFile, open("output.txt", "w") as outputFile:
这将打开一个处于读取模式的文件用于输入,另一个处于(截断和)写入模式以进行输出。它位于with
块中,因为您应该始终使用with
开放。处理文件,输入或输出以及优雅的with
句柄时,您可能会遇到错误。
for line in inputFile:
使用inputFile作为迭代器,逐行逐步执行。我没有将此文件流命名为input
,因为它已经是内置Python关键字input()
的名称。不想迷惑自己。
if "-" in line:
检查该行是否包含“ - ”,如果有,则继续。如果没有,不做任何事情,继续前进到下一行。
outputFile.write(line.replace('[', "\n-"))
write()
直接到文件,绕过Python的print()
接口。我们在前一行代码中编写了一个带“ - ”的行,但在我们写出来之前,我们用'\ n - 替换了所有的'。'。
如您所见,如果您能够理解逻辑和程序流程,那么这是一个非常简单的方法。只有4行。
答案 1 :(得分:0)
这是你可以采取的一种方式:
f = open("target.txt","r+")
d = f.readlines()
f.seek(0)
for i in d:
if i != "line you want to remove...":
f.write(i)
f.truncate()
f.close()
通过阅读该行,您可以指定要删除的行
您需要稍微编辑一下以满足您的特定需求,但如果您有任何疑问,请与我联系。 希望这有帮助!