谁能告诉为啥以下两个代码之间的结果不同? [复制]
Posted
技术标签:
【中文标题】谁能告诉为啥以下两个代码之间的结果不同? [复制]【英文标题】:Can Anybody tell why the result is different between the following 2 codes? [duplicate]谁能告诉为什么以下两个代码之间的结果不同? [复制] 【发布时间】:2018-04-15 14:35:57 【问题描述】:import re
def find_words(num,string):
a = re.findall('\wint(num),',string)
return(a)
find_words(4, "dog, cat, baby, balloon, me")
输出为 []
#####
import re
string = "dog, cat, baby, balloon, me"
a = re.findall('\w4,',string)
print(a)
输出为 ['baby', 'balloon']
【问题讨论】:
int(num)
在字符串文字中不是4
。字符串文字内容不会作为 Python 代码执行。
如果你在问题中显示输出。
【参考方案1】:
应该用输入变量num
替换的函数部分不会像发布的那样工作,因为它只是一个字符串。您必须先替换字符串的那一部分,如下所示:
import re
def find_words(num, string):
target = '\w%d,' % num # if num = 4, target becomes '\w4,'
return re.findall(target, string)
print find_words(4, "dog, cat, baby, balloon, me") # prints ['baby', 'balloon']
或者,您可以这样做以获得相同的结果:
target = '\w,'.format(num)
使用format()
时需要双括号,以便在字符串中包含文字括号。
【讨论】:
以上是关于谁能告诉为啥以下两个代码之间的结果不同? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
java aes加密与网上在线加密不同。谁能告诉我为啥?求个正确的例子,谢谢了!
谁能告诉我为啥我从 GitLab 收到此“错误:作业失败:退出代码 1”消息?