谁能告诉为啥以下两个代码之间的结果不同? [复制]

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”消息?

我有两个被重命名为 jpg 的 gif。一个有效,一个无效。谁能告诉我为啥?

谁能告诉我为啥我的过滤数组是空的?

手动计算CRC和CRC软件计算为啥不一样?

谁能告诉我为啥这超过了 2 秒的时间限制?(短代码)