Python-按第一个字符删除行
我有一个“test.txt”文件,其中包含:Python-按第一个字符删除行,python,file,file-handling,Python,File,File Handling,我有一个“test.txt”文件,其中包含: (5 rows) a (7 rows) b 我想删除以“(”字符开头的行。 我的代码在这里: with open("test.txt", "r") as fin: with open("result.txt", "w") as fout: for line in fin: if line.startswith('('): fout.write(line.replace(
(5 rows)
a
(7 rows)
b
我想删除以“(”字符开头的行。
我的代码在这里:
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write(line.replace('(',''))
else:
fout.write(line)
但返回:
5 rows)
a
7 rows)
b
我想得到结果:
a
b
可以用“开始,开始”吗
谢谢您替换了一个字符,还写了一行 而不是使用
fout.write('\n')
编写换行符
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n')
else:
fout.write(line)
您可以替换一个字符并写入行 而不是使用
fout.write('\n')
编写换行符
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n')
else:
fout.write(line)
如果行以
(
)开头,您只需更改所做的操作。我们只需编写一行新行(\n
)。我们不想替换任何内容,因为我们想完全删除行
下面是完整的代码的样子:
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write("\n")
else:
fout.write(line)
它将result.txt
创建为:
[empty line]
a
[empty line]
b
其中,[空行]
只代表一个空行,但在这个答案中,它更为明显如果该行确实以开头(
),您只需更改所做的操作。我们只需编写一个新行(\n
).我们不想更换任何东西,因为我们想完全摆脱这条线路
下面是完整的代码的样子:
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write("\n")
else:
fout.write(line)
它将result.txt
创建为:
[empty line]
a
[empty line]
b
其中,[空行]
仅表示一个空行,但在回答中使用“not”使其更为明显:
使用“非”的备选方案:
是的,可以使用.startswith()
方法执行您想要执行的操作。您的检查没有问题。当您找到匹配项时,您所执行的操作会给您带来麻烦
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n') # fout.write(line.replace('(',''))
else:
fout.write(line)
如果要删除以“(”开头的行,请不要将它们写入新文件…而是写出一个空行(仅为新行字符)。根据上面的描述,将以“(”开头的行替换为空行似乎是您想要的
如果不想将“(”行替换为空行,那么代码可以简单一点:
if line.startswith('('):
fout.write('\n') # fout.write(line.replace('(',''))
else:
fout.write(line)
可能只是
if not line.startswith('('):
fout.write(line)
是的,可以使用.startswith()
方法执行您想要执行的操作。您的检查没有问题。当您找到匹配项时,您所执行的操作会给您带来麻烦
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n') # fout.write(line.replace('(',''))
else:
fout.write(line)
如果要删除以“(”开头的行,请不要将它们写入新文件…而是写出一个空行(仅为新行字符)。根据上面的描述,将以“(”开头的行替换为空行似乎是您想要的
如果不想将“(”行替换为空行,那么代码可以简单一点:
if line.startswith('('):
fout.write('\n') # fout.write(line.replace('(',''))
else:
fout.write(line)
可能只是
if not line.startswith('('):
fout.write(line)
您可以使用以下步骤实现所需的输出
- 在
read
模式下打开所需文件
- 读所有的行
- 关闭文件
- 在
write
模式下再次打开文件
- 写入所需行,将不需要的行替换为
\n
- 关闭文件
f = open("test.txt","r")
lines = f.readlines()
f.close()
f = open("test.txt","w")
for line in lines:
if not line.startswith('('):
f.write(line)
else:
f.write('\n')
f.close()
您可以通过以下步骤实现所需的输出
- 在
read
模式下打开所需文件
- 读所有的行
- 关闭文件
- 在
write
模式下再次打开文件
- 写入所需行,将不需要的行替换为
\n
- 关闭文件
f = open("test.txt","r")
lines = f.readlines()
f.close()
f = open("test.txt","w")
for line in lines:
if not line.startswith('('):
f.write(line)
else:
f.write('\n')
f.close()
而不是fout.write(line.replace('(',''))
只需使用:
fout.write('\n')
将用新行字符替换该行,因此您的代码将是:
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n')
else:
fout.write(line)
不要使用fout.write(line.replace('(',''))
只需使用:
fout.write('\n')
将用新行字符替换该行,因此您的代码将是:
with open("test.txt", "r") as fin:
with open("result.txt", "w") as fout:
for line in fin:
if line.startswith('('):
fout.write('\n')
else:
fout.write(line)
还可以使用系统命令处理文件。例如,在Linux中:
import os
os.system("cat test.txt | sed 's/^(.*$//' > results.txt")
cat
读取填充文件,|
是通过管道将输出传输到sed
,它将以开头的行替换为空(
为空,最后
将输出重定向到输出文件。还可以使用系统命令处理文件。例如,在Linux中:
import os
os.system("cat test.txt | sed 's/^(.*$//' > results.txt")
cat
读取内嵌,|
是将输出通过管道传输到sed
,sed将替换以开头的行(
为空,最后
将输出重定向到outfile)。如果源行以(
或根本没有行?只需写一行新行,而不是替换找到的(
,即fout.write(“\n”)
)是的,Matthias…如果行以开头(
,为什么要写出来?只需写一行新行(\n
)在if
块中,您应该很好。如果您不想写任何东西,只需说“if not line.startswith('('):”,并且不要包含else子句。如果源行以(
开头,或者根本没有行,您希望结果是空行吗?只需写一行新行,而不是替换找到的(
,即fout.write(“\n”)
)是的,Matthias…如果这行以(
)开头,你为什么要写出来?只要在If
块中写一个换行(\n
),你应该写得很好。如果你什么都不想写,只需说“If not line.startswith”(“(”):”就行了,不要包含else子句。