3

我是 python 新手,做最简单的事情时总是出错。

我正在尝试在正则表达式中使用变量并将其替换为 *

以下让我收到错误“TypeError:并非所有参数在字符串格式化期间都转换”,我不知道为什么。这应该很简单。

import re
file = "my123filename.zip"
pattern = "123"
re.sub(r'%s', "*", file) % pattern

错误:回溯(最近一次调用最后一次):文件“”,第 1 行,在?TypeError:字符串格式化期间并非所有参数都转换了

有小费吗?

4

2 回答 2

6

你的问题出在这条线上:

re.sub(r'%s', "*", file) % pattern

您正在做的是替换字符串中文本中出现的每个%swith (在这种情况下,我建议重命名变量以避免隐藏内置对象并使其更明确您正在使用的内容)。然后,您尝试将(已替换的)文本中的 替换为. 但是, 其中没有任何导致您看到的格式修饰符。它与以下内容基本相同:*filefilenamefile%spatternfileTypeError

'this is a string' % ("foobar!")

这会给你同样的错误。

您可能想要的更像是:

re.sub(str(pattern),'*',file)

这完全等同于:

re.sub(r'%s' % pattern,'*',file)
于 2013-02-07T01:26:21.093 回答
0

试试re.sub(pattern, "*", file)?或者也许re完全跳过,然后做file.replace("123", "*")

于 2013-02-07T01:21:35.877 回答