【问题标题】:Python TypeError when using variable in re.sub在 re.sub 中使用变量时出现 Python TypeError
【发布时间】:2013-02-07 09:54:17
【问题描述】:

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

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

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

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

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

有什么建议吗?

【问题讨论】:

  • 你是说这个re.sub(r'%s' % pattern, "*", file)吗?
  • 第 l 行的代码是什么?

标签: python regex


【解决方案1】:

你的问题出在这一行:

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

您正在做的是将字符串 file 中文本中出现的 %s 替换为 * (在这种情况下,我建议重命名变量 filename 以避免隐藏内置 @ 987654326@ 对象并使其更明确您正在使用的内容)。然后,您尝试将(已替换)文本中的%s 替换为pattern。但是,file 中没有任何格式修饰符,这会导致您看到的 TypeError。基本上是一样的:

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

这会给你同样的错误。

你可能想要的更像是:

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

完全等价于:

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

【讨论】:

    【解决方案2】:

    试试re.sub(pattern, "*", file)?或者完全跳过re,直接做file.replace("123", "*")

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 2013-08-23
      • 2020-12-16
      • 1970-01-01
      相关资源
      最近更新 更多