嗨,请问我如何迭代外部文件中的行,识别每行的最后一个索引处的0,并在检索未删除的行时删除这些行。即
input.txt = 1001 1001 0
1001 1002 0
1001 1003 0.058529
...
...
...
9007 9007 0.0789
我试过这个
with open('input.txt', 'r') as handle:
for line in handle:
o_d = line.split()
if o_d[-1] == '0':
o_d.pop()
print o_d
我知道这只会在每一行中取零0,但是我需要帮助删除0出现的整行,然后用不具有零的行写回文件。
谢谢
答案 0 :(得分:1)
这非常接近您的代码。唯一的问题是您需要致电str.strip
,因为readlines
包含尾随换行符。
此代码首先读入所有数据,然后写入以“0”结尾的所有行,而不是尝试修改文件。
# Read in the source data
with open('input.txt', 'r') as handle:
lines = handle.readlines()
# Open the output file
with open('input.txt', 'w') as handle:
# Examine each line of the source data
for line in lines:
# If it doesn't end with a '0', write it
if line.strip()[-1] != '0':
handle.write(line)
根据您的请求格式化最后一行的一种方法是将行拆分为单独的值,将它们放入元组中,然后将它们插入格式字符串中,然后写入。例如:
"[(%s,%s,{%s})]" % tuple(line.split())
所以完整的代码将是
# Read in the source data
with open('input.txt', 'r') as handle:
lines = handle.readlines()
# Open the output file
with open('input.txt', 'w') as handle:
# Examine each line of the source data
for line in lines:
# If it doesn't end with a '0', write it
if line.strip()[-1] != '0':
line.split()
handle.write("[(%s,%s,{%s})]" % tuple(line.split()))