以下是我的代码 -
import tarfile
import os
import sys
import re
script, bak = sys.argv
bakfile = str(bak)
currentwd = os.path.dirname(os.path.realpath(__file__))
file_to_work = tarfile.open(name=currentwd+"/"+bakfile, mode="r")
file_to_work.extractall()
currentwd = os.path.dirname(os.path.realpath(__file__))
with open(currentwd+"/onedb.xml", "r") as file:
f = file.read()
words = re.findall(r'{ssha}_\w*?=', f)
re.sub(words,r'string_to_replace',f)
我使用了tarfile
模块并从提取的文件中提取了一个gzfile,并选择了onedb.xml。使用正则表达式查找字符串并且成功。
现在,当我尝试使用re.sub
替换搜索到的字符串时,我收到以下错误。
Traceback (most recent call last):
File "preset.py", line 16, in <module>
re.sub(words,r'string_to_replace',f)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python2.7/re.py", line 232, in _compile
p = _cache.get(cachekey)
TypeError: unhashable type: 'list'
答案 0 :(得分:0)
在一个表达式中使用all:
re.sub(r'{ssha}_\w*?=', r'string_to_replace', f)