从python中的字符串中删除子字符串

时间:2014-11-11 14:01:52

标签: python string

我在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

但内容没有改变。

2 个答案:

答案 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之间使用空格。