我有清单
http://lincoln.com/picture/2453345/flower.jpg
http://lincoln.com/picture/2354345/flower1.jpg
替换为:
http://lincoln.com/picture/4453345/flower.jpg
http://lincoln.com/picture/4354345/flower1.jpg
我试过了:
f=open('fileinput','r')
f.replace('2453345/flower.jpg','4453345/flower.jpg')
但我有更多的线。我花了很多时间:( PLZ告诉我如何更换线。感谢
答案 0 :(得分:2)
请参阅以下解决方案:
import re
regexp_test = re.compile('\/\d')
result = regexp_test.sub(lambda x: '/'+str(int(x.group()[1])+2), file_content)
它会在斜杠(“/
”)之后按2
递增每个数字,因此“/2
”将替换为“/4
“等等......
结果会给你:
>>> print result
http://lincoln.com/picture/4453345/flower.jpg
http://lincoln.com/picture/4354345/flower1.jpg
如果file_content
定义如下:
>>> file_content = '''http://lincoln.com/picture/2453345/flower.jpg
http://lincoln.com/picture/2354345/flower1.jpg'''
正如@jsalonen正确注意到的那样,你的脚本还有另一个问题:它直接使用文件,因为它是一个字符串。您应首先阅读其内容:
file_content = open('fileinput','r').read()
然后处理file_content
变量,它是字符串并包含您已阅读的文件的全部内容。
答案 1 :(得分:1)
我猜测当你运行你的f.replace时你得到AttributeError: 'file' object has no attribute 'replace'
,因为 - 好 - replace是一个字符串方法,但f是一个文件对象。
执行替换的一种方法是首先将文件的整个内容读入字符串,然后运行字符串并将修改后的字符串重写回文件:
f=open('fileinput', 'r')
data=f.read()
f.close()
f.open('fileoutput', 'w')
f.write( data.replace('2453345/flower.jpg','4453345/flower.jpg') )
f.close()
如果您想要执行每行替换,只需将数据拆分为split
行并迭代它:
for line in data.split('\n'):
f.write( line.replace('xxx/flower.jpg', 'yyy/flower.jpg') )