在Python中使用两个替换

时间:2015-03-12 09:34:38

标签: python replace

我是Python的新手,我意识到我无法在JavaScript中连接replace

#!/usr/bin/env python
import os
import re
import string

for filename in os.listdir("."):
  if filename.endswith(".png"):
    new_filename = string.replace(filename, "2x", "@3x").replace(filename, "-lanczos3", "")

    os.rename(filename, new_filename)

我收到此错误:

File "hello.py", line 8, in <module>
    new_filename = string.replace(filename, "2x", "@3x").replace(filename, "-lanczos3", "")
TypeError: an integer is required

Python的方法是什么?

4 个答案:

答案 0 :(得分:4)

我对python也很陌生,但我的猜测是改变这一行:

new_filename = string.replace(filename, "2x", "@3x").(filename, "-lanczos3", "")

成:

new_filename = filename.replace("2x", "@3x").replace("-lanczos3", "")

答案 1 :(得分:3)

您正在str.replace()(返回str个对象的函数)的返回值上调用string.replace()(方法)。

只需使用方法:

new_filename = filename.replace("2x", "@3x").replace("-lanczos3", "")

您的错误源自str.replace()的第三个参数,该参数必须是限制替换次数的整数。你基本上这样做了:

'somestring'.replace(thingto_replace, "-lanczos3", "")

其中""参数不是整数。

可以string.replace()执行相同的操作,但是你必须将一个调用的结果作为另一个调用的第一个参数传递:

new_filename = string.replace(string.replace(filename, "2x", "@3x"), "-lanczos3", "")

想要这样做,因为string函数已被弃用;请参阅documentation

  

以下函数列表也定义为字符串和Unicode对象的方法;有关这些的更多信息,请参见字符串方法一节您应该将这些函数视为已弃用,但在Python 3之前不会删除它们。

该部分中的任何函数都具有直接在str类型本身上可用的等效方法。

答案 2 :(得分:2)

filename.replace("2x", "@3x").replace("-lanczos3", "")

答案 3 :(得分:1)

replace上致电filename。像这样:

filename = "abcd"
filename.replace("a", "b").replace("c", "d")

返回

'bbdd'