我在这里做错了什么?
import re
x = "The sky is red"
r = re.compile ("red")
y = r.sub(x, "blue")
print x # Prints "The sky is red"
print y # Prints "blue"
如何打印“天空是蓝色的”?
答案 0 :(得分:12)
您的代码存在的问题是re模块中有两个子功能。一个是普通的,有一个与正则表达式对象相关联。您的代码不遵循任何一个:
这两种方法是:
re.sub(pattern, repl, string[, count])
(docs here)
像这样使用:
>>> y = re.sub(r, 'blue', x)
>>> y
'The sky is blue'
当你手动编译它时,你可以尝试使用:
RegexObject.sub(repl, string[, count=0])
(docs here)
像这样使用:
>>> z = r.sub('blue', x)
>>> z
'The sky is blue'
答案 1 :(得分:6)
您读错了API
http://docs.python.org/library/re.html#re.sub
pattern.sub(repl,string [,count])¶
r.sub(x, "blue")
# should be
r.sub("blue", x)
答案 2 :(得分:3)
您对sub
号召唤的理由应该是错误的方式:
import re
x = "The sky is red"
r = re.compile ("red")
y = r.sub("blue", x)
print x # Prints "The sky is red"
print y # Prints "The sky is blue"
答案 3 :(得分:3)
顺便说一句,对于这样一个简单的例子,re
模块是过度的:
x= "The sky is red"
y= x.replace("red", "blue")
print y
答案 4 :(得分:1)
尝试:
x = r.sub("blue", x)