Python正则表达式类型错误
我正在写我的第一个Python程序,遇到了一个关于正则表达式的问题。我正在使用正则表达式来查找注册表键中的特定值。
import _winreg
import re
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{26A24AE4-039D-4CA4-87B4-2F83216020FF}")
results=[]
v = re.compile(r"(?i)Java")
try:
i = 0
while 1:
name, value, type = _winreg.EnumValue(key, i)
if v.search(value):
results.append((name,value,type))
i += 1
except WindowsError:
print
for x in results:
print "%-50s%-80s%-20s" % x
我遇到了以下错误:
exceptions.TypeError: 期望的是字符串或缓冲区
我可以使用“name”这个变量,正则表达式运行得很好。例如,如果我做以下更改,正则表达式就不会报错:
v = re.compile(r"(?i)DisplayName")
if v.search(name):
谢谢大家的帮助。
1 个回答
3
关于EnumValue
的说明提到,它返回的是一个包含三个部分的元组:第一个是字符串,第二个是可以是任何值类型的对象,第三个是一个整数。正如错误信息所说,你必须传入一个字符串或者一个缓冲区,这就是为什么v.search(value)
会失败的原因。
你应该可以使用v.search(str(value))
来将value
转换成字符串,这样就能正常工作了。