我是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的方法是什么?
答案 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'