我是python的新手,我一直在做最简单的事情。
我正在尝试在正则表达式中使用变量,并用*
替换它下面的错误是“TypeError:不是在字符串格式化期间转换的所有参数”,我不知道为什么。这应该是这么简单。
import re
file = "my123filename.zip"
pattern = "123"
re.sub(r'%s', "*", file) % pattern
错误: Traceback(最近一次调用最后一次): 文件“”,第1行,在? TypeError:不是在字符串格式化期间转换的所有参数
任何提示?
答案 0 :(得分:5)
你的问题在于这一行:
re.sub(r'%s', "*", file) % pattern
您正在做的是用字符串%s
替换文本*
中file
的每一次出现(在这种情况下,我建议重命名变量{{1}避免遮蔽内置的filename
对象,并使其更明确地与您合作。然后,您尝试将{已替换的)文本中的file
替换为%s
。但是,pattern
中没有任何格式修饰符,这会导致您看到的file
。它基本上与:
TypeError
会给你同样的错误。
你可能想要的更像是:
'this is a string' % ("foobar!")
完全等同于:
re.sub(str(pattern),'*',file)
答案 1 :(得分:0)
试试re.sub(pattern, "*", file)
?或者可以完全跳过re
而只是file.replace("123", "*")
。