我在python中有一个带文件名的文件。我想使用python代码删除一些行和文件名的一些替代。我的文件格式如上:
img/1.jpg
img/10.jpg
img/100.jpg 0 143 84 227
...
我想删除所有文件中的img / substring以及缺少坐标的行。对于第二项任务,我做了以下工作:
for con in content:
if ".jpg\n" in con:
content.remove(con)
for con in content:
print con
但内容没有改变。
答案 0 :(得分:2)
您在迭代时尝试修改列表content
。这会很快咬你的膝盖。
相反,在python中生成一个新列表:
>>> content = [fn for fn in content if not fn.endswith(".jpg\n")]
>>>
在此之后,您可以使用... contents
中的内容覆盖您读取的文件。上面的例子假设文件名和换行符之间没有空格。
答案 1 :(得分:1)
当前方法中的错误是因为您按字母迭代每行,for l in somestring:
将逐字逐句。显然,".jpg\n"
不会出现在单个字母中,因此您永远不会点击content.remove(con)
。
我建议采用略有不同的方法:
with open("fileofdata.txt", 'r') as f:
content = [line for line in f.readlines() if len(line.split()) > 1]
使用len(line.split())
比line.endswith()
更强大,因为它允许在.jpg
和\n
之间使用空格。