当前位置: 首页 > 面试题库 >

Python string.replace()不替换字符

王轶
2023-03-14
问题内容

一些背景信息:我们使用的是一个古老的基于Web的文档数据库系统,几乎完全由带有“正常”扩展名(.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, "_")
  • 例如line[2]:“ Blah blah boring-Meeting 2/19 / 2008.doc”
  • 示例line[5]:“商务会议2/2008”

当我print letterfor循环中添加内容时,它将打印出本应替换的字母,但实际上不会像我希望的那样用下划线替换该字符。

我在这里做错什么吗?


问题答案:

这是因为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])


 类似资料:
  • 问题内容: 我有一个以字符串形式传递的句子,我正在对单词“ and”进行替换,我想用“”替换它。而且它不是用空格替换“和”一词。以下是我的逻辑示例。而当我调试此逻辑时,逻辑确实落入了句子。 这里有我想念的东西吗? 问题答案: 而当我调试此逻辑时,逻辑确实落入了句子。 是的,然后你放弃返回值。 Java中的字符串是不可变的-当你调用时,它不会更改现有字符串的内容-它会返回经过修改的新字符串。所以你要

  • 我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替 这里有我遗漏的东西吗。

  • 问题内容: 我希望将文本“REPLACEME”替换为我的StringBuffer符号。当我打印符号时,它是一个有效的字符串。当我打印查询时,它仍然具有文本REPLACEME而不是符号。为什么? 问题答案: 更改 至: Java中的字符串被设计为不可变的。 这就是为什么不能替换当前字符串 中 的字符,因此它必须返回替换了字符的 新 字符串。 此外,如果你想简单地替换文字,不需要正则表达式的语法支持使

  • 问题内容: 我经常使用包含以下字符的utf-8文本: \ xc2 \ x99 \ xc2 \ x95 \ xc2 \ x85 等等 这些字符使我使用的其他库感到困惑,因此需要替换。 什么是有效的方法,而不是: 问题答案: 总是有正则表达式;只需在方括号内列出所有令人反感的字符,如下所示: 打印:’Hello There’,用空格替换不需要的字符。 或者,如果每个字符都有不同的替换字符:

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。

  • 本文向大家介绍JS替换字符串中字符即替换全部而不是第一个,包括了JS替换字符串中字符即替换全部而不是第一个的使用技巧和注意事项,需要的朋友参考一下 有时候用JS替换字符串时,replyText= replyText.replace("aa",""); 这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,这种方法就不能使用了。。 可以用如下方法做参考: str是目标字符串 reallyDo是