用python替换String

时间:2011-11-27 17:13:38

标签: python replace

我有清单

  

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告诉我如何更换线。感谢

2 个答案:

答案 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') )