gpt4 book ai didi

Python string.replace() 不替换字符

转载 作者:太空狗 更新时间:2023-10-29 17:22:09 25 4
gpt4 key购买 nike

一些背景信息:我工作的地方有一个古老的基于网络的文档数据库系统,几乎完全由带有“正常”扩展名(.doc、.xls、.ppt)的 MS Office 文档组成。它们都是根据某种任意 ID 号(即 1245.doc)命名的。我们正在切换到 SharePoint,我需要重命名所有这些文件并将它们分类到文件夹中。我有一个包含各种信息的 CSV 文件(比如哪个 ID 号对应哪个文档的标题),所以我用它来重命名这些文件。我编写了一个简短的 Python 脚本来重命名 ID 号标题。

但是,一些文档的标题在文件标题中有斜杠和其他可能的错误字符,所以我想用下划线替换它们:

bad_characters = ["/", "\\", ":", "(", ")", "<", ">", "|", "?", "*"]
for letter in bad_characters:
filename = line[2].replace(letter, "_")
foldername = line[5].replace(letter, "_")
  • 行[2]示例:“Blah blah boring - meeting 2/19/2008.doc”
  • 行[5]示例:“商务 session 2/2008”

当我在 for 循环中添加 print letter 时,它会打印出它应该替换的字母,但实际上不会用下划线就像我想要的那样。

我这里有什么地方做错了吗?

最佳答案

那是因为 filenamefoldername 在循环的每次迭代中都被丢弃了。 .replace() 方法返回一个字符串,但您不会将结果保存在任何地方。

你应该使用:

filename = line[2]
foldername = line[5]

for letter in bad_characters:
filename = filename.replace(letter, "_")
foldername = foldername.replace(letter, "_")

但我会使用正则表达式来完成。它更干净而且(可能)更快:

p = re.compile('[/:()<>|?*]|(\\\)')
filename = p.sub('_', line[2])
folder = p.sub('_', line[5])

关于Python string.replace() 不替换字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3523054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com