<分区>
是python糊涂了,还是程序员糊涂了?
我有很多这样的台词:
some_dict[0x2a] = blah
some_dict[0xab] = blah, blah
我想做的是将十六进制代码转换为全部大写,如下所示:
some_dict[0x2A] = blah
some_dict[0xAB] = blah, blah
所以我决定调用正则表达式。通常,我只是使用我的编辑器的正则表达式 (xemacs) 来执行此操作,但是转换为大写的需要将一个插入了 Lisp。 ....ok... Python 怎么样?
所以我拼凑了一个不起作用的简短脚本。我已将代码压缩到这个示例中,但它也不起作用。在我看来,Python 的正则表达式被代码中的括号弄糊涂了。是我还是 Python?
import fileinput
import sys
import re
this = "0x2a"
that = "[0x2b]"
for line in [this, that]:
found = re.match("0x([0-9,a-f]{2})", line)
if found:
print("Found: %s" % found.group(0))
(我使用的是 () 分组结构,所以我没有将 '0x' 中的 'x' 大写。)
此示例仅打印 0x2a 值,不打印 0x2b。这是正确的行为吗?
我可以通过将匹配表达式更改为以下方式轻松解决此问题:
found = re.match("\[0x([0-9,a-f]{2}\])", line)
但我只是想知道是否有人可以让我了解这里发生的事情。
在 Linux 上运行 Python 2.6.2。