【问题标题】:about the re module in python [closed]关于python中的re模块[关闭]
【发布时间】:2016-11-09 22:51:36
【问题描述】:

我正在运行这样的片段:

p = re.compile(b'^((?!-)[*A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$')
m = p.match(domain)

'domain' 是从 google dns 获取的 IP 地址。我知道解码有问题,所以我在编译后尝试对正则表达式进行编码,但仍然收到这样的错误通知,

Traceback (most recent call last):
File "D:\python34\lib\threading.py", line 921, in _bootstrap_inner
self.run()
File "update.py", line 101, in run
  if validate_domain(domain):
File "update.py", line 182, in validate_domain
  m = pattern.match(domain)
TypeError: can't use a bytes pattern on a string-like object

你能给我一些关于这种情况的提示

!!!编程语言:python 3.4

【问题讨论】:

  • 摆脱b
  • 谷歌上给定错误消息的第一个链接是duplicate
  • 您使用b''而不是r''的任何原因?

标签: python regex decode encode bytecode


【解决方案1】:

b 附加到模式的开头使其成为字节对象。但是您不能将字符串对象与字节模式匹配。错误很明显:

p = re.compile(b'^((?!-)[*A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$')
#              ^

您可能打算使用r''

【讨论】:

  • 为什么这被否决了?我也会说同样的话。
猜你喜欢
  • 1970-01-01
  • 2019-05-30
  • 2014-08-12
  • 2021-02-04
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
相关资源
最近更新 更多