python中str是什么函数_如何解释Python 3.6中的str.maketrans函数?

我目前正在参加一个Udacity课程,指导学生使用Python编程。其中一个项目让学生重命名一个目录中的照片文件(删除名称中的任何数字),以便文件按字母顺序排列,之后将拼写出一条秘密消息。例如,如果一个文件名是"48athens",那么程序会试图删除这些数字,只留下"athens"作为文件名。

我使用的是Python3.6,而课程讲师使用的是Python2.7。我可能会使用Python2.7来简化学习过程。不过,现在我将继续使用Python3.6。

讲师重命名文件的方式是使用.translate函数,该函数在Python 2.x中接受两个参数,而Python 3.x只接受一个参数。它从文件名中删除任何数字(0到9)。import os

def rename_files(): #Obtain the file names from a folder.

file_list = os.listdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")

print (file_list)

saved_path = os.getcwd()

os.chdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")

for file_name in file_list: #Rename the files inside of the folder.

os.rename(file_name, file_name.translate(None, "0123456789"))

os.chdir(saved_path)

rename_files()

但是,这在Python3.x中不起作用,因为它说:TypeError: translate() takes exactly one argument (2 given)

谢天谢地,我在别人的帮助下找到了另一种方法。但是,我不确定它是如何工作的。有人能给我解释一下str.maketrans函数,以及引号中的前两个空白参数是用来做什么的吗?我的想法是:对于文件名的前两个字符,删除任何数字(0到9)。是这样吗?例如,在"48athens"中,如果前两个字符(4和8)是介于0和9之间的数字,则删除它们。import os

def rename_files(): #Obtain the file names from a folder.

file_list = os.listdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")

print (file_list)

saved_path = os.getcwd()

os.chdir(r"C:\Users\Dennis\Desktop\OOP\prank\prank")

for file_name in file_list: #Rename the files inside of the folder.

os.rename(file_name, file_name.translate(str.maketrans('','','0123456789')))

os.chdir(saved_path)

rename_files()

我对文档的理解:static str.maketrans(x[, y[, z]])

This static method returns a translation table usable for str.translate().

这是说传递给str.maketrans的参数,以及实际的函数str.maketrans,将生成一个表,该表显示“如果出现此字符,请用此字符替换它”。但是,我不确定括号的用途。If there is only one argument, it must be a dictionary mapping Unicode

ordinals (integers) or characters (strings of length 1) to Unicode

ordinals, strings (of arbitrary lengths) or None. Character keys will

then be converted to ordinals.

也就是说,它只能将整数或长度为1的字符串中的字符更改为其他整数或字符串(任何长度)。但我相信我有三个论点,不是一个。If there are two arguments, they must be strings of equal length, and

in the resulting dictionary, each character in x will be mapped to the

character at the same position in y. If there is a third argument, it

must be a string, whose characters will be mapped to None in the

result.

我有三个参数('', '', '0123456789')。我认为x是第一个'',而y是第二个''。我有第三个参数,它是一个字符串'0123456789',但是我不明白映射到'None'意味着什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值