用python替换字符串

用python替换字符串,python,replace,Python,Replace,我有一张单子 替换为: 我试过: f=open('fileinput','r') f.replace('2453345/flower.jpg','4453345/flower.jpg') 但我有更多的线路。我做这件事花了很多时间:( 请告诉我如何替换行。谢谢我猜当您运行f.replace时,您会得到AttributeError:“file”对象没有属性“replace”,因为-well-replace是一个字符串方法,但f是一个file对象 替换的一种方法是首先将文件的全部内容读入字符

我有一张单子


替换为:


我试过:

f=open('fileinput','r')
f.replace('2453345/flower.jpg','4453345/flower.jpg')
但我有更多的线路。我做这件事花了很多时间:(
请告诉我如何替换行。谢谢

我猜当您运行f.replace时,您会得到
AttributeError:“file”对象没有属性“replace”
,因为-well-replace是一个字符串方法,但f是一个file对象

替换的一种方法是首先将文件的全部内容读入字符串,然后运行字符串并将修改后的字符串重写回文件:

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') )
使用正则表达式替换字符串的一部分 请参阅以下解决方案:

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 = '''http://lincoln.com/picture/2453345/flower.jpg
http://lincoln.com/picture/2354345/flower1.jpg'''
将文件内容用作字符串 正如@jsalonen正确地注意到的,您的脚本还有另一个问题:它直接使用文件,因为它是字符串。您应该首先读取其内容:

file_content = open('fileinput','r').read()

然后处理
file\u content
变量,该变量是字符串,包含您已读取的文件的全部内容。

数字从何而来?如果每个替换都是任意的,则很难自动执行…是的,您可以。例如,只需添加几个连续的替换命令,例如:f.write(data.replace('2453345/flower.jpg'、'4453345/flower.jpg')。替换('2354345/flower1.jpg'、'435445/flower1.jpg'))我希望你明白我的意思。显然,对于更多的替换,需要一个更优雅的解决方案。你能说明如何进行替换吗?例如,你想应用什么样的替换规则?我想用行替换。在行上替换为关键字'flower.jpg'