程序读取文本文件并根据变量替换匹配的单词。问题是正在替换非精确匹配。因此,如果我要更换""用" da"单词"然后"成为" dan"
for fn in os.listdir('.'):
if os.path.isfile(fn):
if fn.endswith(".txt"):
s = open(fn).read()
for i in skills:
link = skills[i]
s = s.replace(i, "<a href=\"%s\">%s</a>" %(link,i), 1)
print "%s updated" %fn
f = open(fn, 'w')
f.write(s)
f.close()
问题出在s = s.replace(i, "<a href=\"%s\">%s</a>" %(link,i), 1)
,其中s.replace()中的第一个参数是包含我想要匹配的字符串的变量。
我尝试过使用字词边界s = s.replace(r'\b'+i+r'\b', "<a href=\"%s\">%s</a>" %(link,i), 1)
并将i
的值格式化为新变量:regex = r'\b' + i + r'\b'
并使用regex
作为s.replace
中的第一个参数,但它不起作用。< / p>
请注意。 skills
是包含字/链接对
答案 0 :(得分:3)
由于s
是字符串,因此不支持正则表达式操作。
要在字符串上使用正则表达式,您需要明确地执行此操作。
所以放在代码的开头
import re
以及您现在使用的地方
s = s.replace(i, "<a href=\"%s\">%s</a>" %(link,i), 1)
使用,而不是
s = re.sub(r'\b'+i+r'\b', '<a href="%s">%s</a>'%(link,i), s, 1)
答案 1 :(得分:0)
如果string
是您的阅读文件的内容:
string = string.replace('the ', 'da ') # space ensures then isn't replaced
答案 2 :(得分:0)
使用正则表达式匹配要替换的字符时,需要使用re.sub
函数。 string.replace
函数不会将正则表达式作为参数。